Merge branches 'x86/acpi', 'x86/asm', 'x86/cpudetect', 'x86/crashdump', 'x86/debug...
authorIngo Molnar <mingo@elte.hu>
Fri, 13 Feb 2009 08:46:36 +0000 (09:46 +0100)
committerIngo Molnar <mingo@elte.hu>
Fri, 13 Feb 2009 08:46:36 +0000 (09:46 +0100)
12 files changed:
1  2  3  4  5  6  7  8 
arch/x86/configs/i386_defconfig
arch/x86/configs/x86_64_defconfig
arch/x86/include/asm/io.h
arch/x86/include/asm/io_32.h
arch/x86/include/asm/io_64.h
arch/x86/include/asm/page.h
arch/x86/include/asm/pgtable.h
arch/x86/include/asm/pgtable_64.h
arch/x86/kernel/acpi/boot.c
arch/x86/kernel/apic.c
arch/x86/kernel/es7000_32.c
arch/x86/mm/init_32.c

        #
        # Automatically generated make config: don't edit
----- --# Linux kernel version: 2.6.27-rc5
----- --# Wed Sep  3 17:23:09 2008
+++++ ++# Linux kernel version: 2.6.29-rc4
+++++ ++# Thu Feb 12 12:57:57 2009
        #
        # CONFIG_64BIT is not set
        CONFIG_X86_32=y
        # CONFIG_X86_64 is not set
        CONFIG_X86=y
        CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
----- --# CONFIG_GENERIC_LOCKBREAK is not set
        CONFIG_GENERIC_TIME=y
        CONFIG_GENERIC_CMOS_UPDATE=y
        CONFIG_CLOCKSOURCE_WATCHDOG=y
@@@@@@@@@ -24,16 -24,16 -24,16 -24,16 -24,16 -23,14 -24,16 -24,16 +23,14 @@@@@@@@@ CONFIG_GENERIC_ISA_DMA=
        CONFIG_GENERIC_IOMAP=y
        CONFIG_GENERIC_BUG=y
        CONFIG_GENERIC_HWEIGHT=y
----- --# CONFIG_GENERIC_GPIO is not set
        CONFIG_ARCH_MAY_HAVE_PC_FDC=y
        # CONFIG_RWSEM_GENERIC_SPINLOCK is not set
        CONFIG_RWSEM_XCHGADD_ALGORITHM=y
----- --# CONFIG_ARCH_HAS_ILOG2_U32 is not set
----- --# CONFIG_ARCH_HAS_ILOG2_U64 is not set
        CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
        CONFIG_GENERIC_CALIBRATE_DELAY=y
        # CONFIG_GENERIC_TIME_VSYSCALL is not set
        CONFIG_ARCH_HAS_CPU_RELAX=y
+++++ ++CONFIG_ARCH_HAS_DEFAULT_IDLE=y
        CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
        CONFIG_HAVE_SETUP_PER_CPU_AREA=y
        # CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
@@@@@@@@@ -42,12 -42,12 -42,12 -42,12 -42,12 -39,12 -42,12 -42,12 +39,12 @@@@@@@@@ CONFIG_ARCH_SUSPEND_POSSIBLE=
        # CONFIG_ZONE_DMA32 is not set
        CONFIG_ARCH_POPULATES_NODE_MAP=y
        # CONFIG_AUDIT_ARCH is not set
----- --CONFIG_ARCH_SUPPORTS_AOUT=y
        CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
        CONFIG_GENERIC_HARDIRQS=y
        CONFIG_GENERIC_IRQ_PROBE=y
        CONFIG_GENERIC_PENDING_IRQ=y
        CONFIG_X86_SMP=y
+++++ ++CONFIG_USE_GENERIC_SMP_HELPERS=y
        CONFIG_X86_32_SMP=y
        CONFIG_X86_HT=y
        CONFIG_X86_BIOS_REBOOT=y
@@@@@@@@@ -76,30 -76,30 -76,30 -76,30 -76,30 -73,44 -76,30 -76,30 +73,44 @@@@@@@@@ CONFIG_TASK_IO_ACCOUNTING=
        CONFIG_AUDIT=y
        CONFIG_AUDITSYSCALL=y
        CONFIG_AUDIT_TREE=y
+++++ ++
+++++ ++#
+++++ ++# RCU Subsystem
+++++ ++#
+++++ ++# CONFIG_CLASSIC_RCU is not set
+++++ ++CONFIG_TREE_RCU=y
+++++ ++# CONFIG_PREEMPT_RCU is not set
+++++ ++# CONFIG_RCU_TRACE is not set
+++++ ++CONFIG_RCU_FANOUT=32
+++++ ++# CONFIG_RCU_FANOUT_EXACT is not set
+++++ ++# CONFIG_TREE_RCU_TRACE is not set
+++++ ++# CONFIG_PREEMPT_RCU_TRACE is not set
        # CONFIG_IKCONFIG is not set
   -    CONFIG_LOG_BUF_SHIFT=17
   -    CONFIG_CGROUPS=y
   -    # CONFIG_CGROUP_DEBUG is not set
   -    CONFIG_CGROUP_NS=y
   -    # CONFIG_CGROUP_DEVICE is not set
   -    CONFIG_CPUSETS=y
   +    CONFIG_LOG_BUF_SHIFT=18
--- - --CONFIG_CGROUPS=y
--- - --# CONFIG_CGROUP_DEBUG is not set
--- - --CONFIG_CGROUP_NS=y
--- - --# CONFIG_CGROUP_DEVICE is not set
--- - --CONFIG_CPUSETS=y
        CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
        CONFIG_GROUP_SCHED=y
        CONFIG_FAIR_GROUP_SCHED=y
        # CONFIG_RT_GROUP_SCHED is not set
        # CONFIG_USER_SCHED is not set
        CONFIG_CGROUP_SCHED=y
+++++ ++CONFIG_CGROUPS=y
+++++ ++# CONFIG_CGROUP_DEBUG is not set
+++++ ++CONFIG_CGROUP_NS=y
+++++ ++CONFIG_CGROUP_FREEZER=y
+++++ ++# CONFIG_CGROUP_DEVICE is not set
+++++ ++CONFIG_CPUSETS=y
+++++ ++CONFIG_PROC_PID_CPUSET=y
        CONFIG_CGROUP_CPUACCT=y
        CONFIG_RESOURCE_COUNTERS=y
        # CONFIG_CGROUP_MEM_RES_CTLR is not set
        # CONFIG_SYSFS_DEPRECATED_V2 is not set
----- --CONFIG_PROC_PID_CPUSET=y
        CONFIG_RELAY=y
        CONFIG_NAMESPACES=y
        CONFIG_UTS_NS=y
        CONFIG_IPC_NS=y
        CONFIG_USER_NS=y
        CONFIG_PID_NS=y
+++++ ++CONFIG_NET_NS=y
        CONFIG_BLK_DEV_INITRD=y
        CONFIG_INITRAMFS_SOURCE=""
        CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@@@@@@@@ -124,12 -124,12 -124,12 -124,12 -124,12 -135,15 -124,12 -124,12 +135,15 @@@@@@@@@ CONFIG_SIGNALFD=
        CONFIG_TIMERFD=y
        CONFIG_EVENTFD=y
        CONFIG_SHMEM=y
+++++ ++CONFIG_AIO=y
        CONFIG_VM_EVENT_COUNTERS=y
+++++ ++CONFIG_PCI_QUIRKS=y
        CONFIG_SLUB_DEBUG=y
        # CONFIG_SLAB is not set
        CONFIG_SLUB=y
        # CONFIG_SLOB is not set
        CONFIG_PROFILING=y
+++++ ++CONFIG_TRACEPOINTS=y
        CONFIG_MARKERS=y
        # CONFIG_OPROFILE is not set
        CONFIG_HAVE_OPROFILE=y
@@@@@@@@@ -139,15 -139,15 -139,15 -139,15 -139,15 -153,10 -139,15 -139,15 +153,10 @@@@@@@@@ CONFIG_KRETPROBES=
        CONFIG_HAVE_IOREMAP_PROT=y
        CONFIG_HAVE_KPROBES=y
        CONFIG_HAVE_KRETPROBES=y
----- --# CONFIG_HAVE_ARCH_TRACEHOOK is not set
----- --# CONFIG_HAVE_DMA_ATTRS is not set
----- --CONFIG_USE_GENERIC_SMP_HELPERS=y
----- --# CONFIG_HAVE_CLK is not set
----- --CONFIG_PROC_PAGE_MONITOR=y
+++++ ++CONFIG_HAVE_ARCH_TRACEHOOK=y
        CONFIG_HAVE_GENERIC_DMA_COHERENT=y
        CONFIG_SLABINFO=y
        CONFIG_RT_MUTEXES=y
----- --# CONFIG_TINY_SHMEM is not set
        CONFIG_BASE_SMALL=0
        CONFIG_MODULES=y
        # CONFIG_MODULE_FORCE_LOAD is not set
@@@@@@@@@ -155,12 -155,12 -155,12 -155,12 -155,12 -164,10 -155,12 -155,12 +164,10 @@@@@@@@@ CONFIG_MODULE_UNLOAD=
        CONFIG_MODULE_FORCE_UNLOAD=y
        # CONFIG_MODVERSIONS is not set
        # CONFIG_MODULE_SRCVERSION_ALL is not set
----- --CONFIG_KMOD=y
        CONFIG_STOP_MACHINE=y
        CONFIG_BLOCK=y
        # CONFIG_LBD is not set
        CONFIG_BLK_DEV_IO_TRACE=y
----- --# CONFIG_LSF is not set
        CONFIG_BLK_DEV_BSG=y
        # CONFIG_BLK_DEV_INTEGRITY is not set
        
@@@@@@@@@ -176,7 -176,7 -176,7 -176,7 -176,7 -183,7 -176,7 -176,7 +183,7 @@@@@@@@@ CONFIG_IOSCHED_CFQ=
        CONFIG_DEFAULT_CFQ=y
        # CONFIG_DEFAULT_NOOP is not set
        CONFIG_DEFAULT_IOSCHED="cfq"
----- --CONFIG_CLASSIC_RCU=y
+++++ ++CONFIG_FREEZER=y
        
        #
        # Processor type and features
@@@@@@@@@ -186,14 -186,15 -186,15 -186,15 -186,15 -193,16 -186,15 -186,15 +193,15 @@@@@@@@@ CONFIG_NO_HZ=
        CONFIG_HIGH_RES_TIMERS=y
        CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
        CONFIG_SMP=y
+++++ ++CONFIG_SPARSE_IRQ=y
        CONFIG_X86_FIND_SMP_CONFIG=y
        CONFIG_X86_MPPARSE=y
 -------CONFIG_X86_PC=y
        # CONFIG_X86_ELAN is not set
        # CONFIG_X86_VOYAGER is not set
        # CONFIG_X86_GENERICARCH is not set
        # CONFIG_X86_VSMP is not set
        # CONFIG_X86_RDC321X is not set
----- --CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+++++ ++CONFIG_SCHED_OMIT_FRAME_POINTER=y
        # CONFIG_PARAVIRT_GUEST is not set
        # CONFIG_MEMTEST is not set
        # CONFIG_M386 is not set
@@@@@@@@@ -237,10 -238,10 -238,10 -238,10 -238,10 -246,19 -238,10 -238,10 +245,19 @@@@@@@@@ CONFIG_X86_TSC=
        CONFIG_X86_CMOV=y
        CONFIG_X86_MINIMUM_CPU_FAMILY=4
        CONFIG_X86_DEBUGCTLMSR=y
+++++ ++CONFIG_CPU_SUP_INTEL=y
+++++ ++CONFIG_CPU_SUP_CYRIX_32=y
+++++ ++CONFIG_CPU_SUP_AMD=y
+++++ ++CONFIG_CPU_SUP_CENTAUR_32=y
+++++ ++CONFIG_CPU_SUP_TRANSMETA_32=y
+++++ ++CONFIG_CPU_SUP_UMC_32=y
+++++ ++CONFIG_X86_DS=y
+++++ ++CONFIG_X86_PTRACE_BTS=y
        CONFIG_HPET_TIMER=y
        CONFIG_HPET_EMULATE_RTC=y
        CONFIG_DMI=y
        # CONFIG_IOMMU_HELPER is not set
+++++ ++# CONFIG_IOMMU_API is not set
        CONFIG_NR_CPUS=64
        CONFIG_SCHED_SMT=y
        CONFIG_SCHED_MC=y
@@@@@@@@@ -249,12 -250,12 -250,12 -250,12 -250,12 -267,15 -250,12 -250,12 +266,15 @@@@@@@@@ CONFIG_PREEMPT_VOLUNTARY=
        # CONFIG_PREEMPT is not set
        CONFIG_X86_LOCAL_APIC=y
        CONFIG_X86_IO_APIC=y
+++++ ++CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
        # CONFIG_X86_MCE is not set
        CONFIG_VM86=y
        # CONFIG_TOSHIBA is not set
        # CONFIG_I8K is not set
        CONFIG_X86_REBOOTFIXUPS=y
        CONFIG_MICROCODE=y
+++++ ++CONFIG_MICROCODE_INTEL=y
+++++ ++CONFIG_MICROCODE_AMD=y
        CONFIG_MICROCODE_OLD_INTERFACE=y
        CONFIG_X86_MSR=y
        CONFIG_X86_CPUID=y
@@@@@@@@@ -263,6 -264,6 -264,6 -264,6 -264,6 -284,7 -264,6 -264,6 +283,7 @@@@@@@@@ CONFIG_HIGHMEM4G=
        # CONFIG_HIGHMEM64G is not set
        CONFIG_PAGE_OFFSET=0xC0000000
        CONFIG_HIGHMEM=y
+++++ ++# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
        CONFIG_ARCH_FLATMEM_ENABLE=y
        CONFIG_ARCH_SPARSEMEM_ENABLE=y
        CONFIG_ARCH_SELECT_MEMORY_MODEL=y
@@@@@@@@@ -273,14 -274,14 -274,14 -274,14 -274,14 -295,17 -274,14 -274,14 +294,17 @@@@@@@@@ CONFIG_FLATMEM_MANUAL=
        CONFIG_FLATMEM=y
        CONFIG_FLAT_NODE_MEM_MAP=y
        CONFIG_SPARSEMEM_STATIC=y
----- --# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
        CONFIG_PAGEFLAGS_EXTENDED=y
        CONFIG_SPLIT_PTLOCK_CPUS=4
----- --CONFIG_RESOURCES_64BIT=y
+++++ ++# CONFIG_PHYS_ADDR_T_64BIT is not set
        CONFIG_ZONE_DMA_FLAG=1
        CONFIG_BOUNCE=y
        CONFIG_VIRT_TO_BUS=y
+++++ ++CONFIG_UNEVICTABLE_LRU=y
        CONFIG_HIGHPTE=y
+++++ ++CONFIG_X86_CHECK_BIOS_CORRUPTION=y
+++++ ++CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
+++++ ++CONFIG_X86_RESERVE_LOW_64K=y
        # CONFIG_MATH_EMULATION is not set
        CONFIG_MTRR=y
        # CONFIG_MTRR_SANITIZER is not set
@@@@@@@@@ -297,14 -298,14 -298,14 -298,14 -298,14 -322,15 -298,14 -298,14 +321,15 @@@@@@@@@ CONFIG_KEXEC=
        CONFIG_CRASH_DUMP=y
        # CONFIG_KEXEC_JUMP is not set
        CONFIG_PHYSICAL_START=0x1000000
   -    CONFIG_RELOCATABLE=y
   +    # CONFIG_RELOCATABLE is not set
        CONFIG_PHYSICAL_ALIGN=0x200000
        CONFIG_HOTPLUG_CPU=y
        # CONFIG_COMPAT_VDSO is not set
+++++ ++# CONFIG_CMDLINE_BOOL is not set
        CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
        
        #
----- --# Power management options
+++++ ++# Power management and ACPI options
        #
        CONFIG_PM=y
        CONFIG_PM_DEBUG=y
@@@@@@@@@ -330,19 -331,19 -331,19 -331,19 -331,19 -356,13 -331,19 -331,19 +355,13 @@@@@@@@@ CONFIG_ACPI_BATTERY=
        CONFIG_ACPI_BUTTON=y
        CONFIG_ACPI_FAN=y
        CONFIG_ACPI_DOCK=y
----- --# CONFIG_ACPI_BAY is not set
        CONFIG_ACPI_PROCESSOR=y
        CONFIG_ACPI_HOTPLUG_CPU=y
        CONFIG_ACPI_THERMAL=y
----- --# CONFIG_ACPI_WMI is not set
----- --# CONFIG_ACPI_ASUS is not set
----- --# CONFIG_ACPI_TOSHIBA is not set
        # CONFIG_ACPI_CUSTOM_DSDT is not set
        CONFIG_ACPI_BLACKLIST_YEAR=0
        # CONFIG_ACPI_DEBUG is not set
----- --CONFIG_ACPI_EC=y
        # CONFIG_ACPI_PCI_SLOT is not set
----- --CONFIG_ACPI_POWER=y
        CONFIG_ACPI_SYSTEM=y
        CONFIG_X86_PM_TIMER=y
        CONFIG_ACPI_CONTAINER=y
@@@@@@@@@ -387,7 -388,7 -388,7 -388,7 -388,7 -407,6 -388,7 -388,7 +406,6 @@@@@@@@@ CONFIG_X86_ACPI_CPUFREQ=
        #
        # shared options
        #
----- --# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
        # CONFIG_X86_SPEEDSTEP_LIB is not set
        CONFIG_CPU_IDLE=y
        CONFIG_CPU_IDLE_GOV_LADDER=y
@@@@@@@@@ -414,6 -415,6 -415,6 -415,6 -415,6 -433,7 -415,6 -415,6 +432,7 @@@@@@@@@ CONFIG_ARCH_SUPPORTS_MSI=
        CONFIG_PCI_MSI=y
        # CONFIG_PCI_LEGACY is not set
        # CONFIG_PCI_DEBUG is not set
+++++ ++# CONFIG_PCI_STUB is not set
        CONFIG_HT_IRQ=y
        CONFIG_ISA_DMA_API=y
        # CONFIG_ISA is not set
@@@@@@@@@ -451,13 -452,13 -452,13 -452,13 -452,13 -471,17 -452,13 -452,13 +470,17 @@@@@@@@@ CONFIG_HOTPLUG_PCI=
        # Executable file formats / Emulations
        #
        CONFIG_BINFMT_ELF=y
+++++ ++CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+++++ ++CONFIG_HAVE_AOUT=y
        # CONFIG_BINFMT_AOUT is not set
        CONFIG_BINFMT_MISC=y
+++++ ++CONFIG_HAVE_ATOMIC_IOMAP=y
        CONFIG_NET=y
        
        #
        # Networking options
        #
+++++ ++CONFIG_COMPAT_NET_DEV_OPS=y
        CONFIG_PACKET=y
        CONFIG_PACKET_MMAP=y
        CONFIG_UNIX=y
@@@@@@@@@ -518,7 -519,7 -519,7 -519,7 -519,7 -542,6 -519,7 -519,7 +541,6 @@@@@@@@@ CONFIG_DEFAULT_CUBIC=
        # CONFIG_DEFAULT_RENO is not set
        CONFIG_DEFAULT_TCP_CONG="cubic"
        CONFIG_TCP_MD5SIG=y
----- --# CONFIG_IP_VS is not set
        CONFIG_IPV6=y
        # CONFIG_IPV6_PRIVACY is not set
        # CONFIG_IPV6_ROUTER_PREF is not set
@@@@@@@@@ -556,19 -557,19 -557,19 -557,19 -557,19 -579,21 -557,19 -557,19 +578,21 @@@@@@@@@ CONFIG_NF_CONNTRACK_IRC=
        CONFIG_NF_CONNTRACK_SIP=y
        CONFIG_NF_CT_NETLINK=y
        CONFIG_NETFILTER_XTABLES=y
+++++ ++CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
        CONFIG_NETFILTER_XT_TARGET_MARK=y
        CONFIG_NETFILTER_XT_TARGET_NFLOG=y
        CONFIG_NETFILTER_XT_TARGET_SECMARK=y
----- --CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
        CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
        CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
        CONFIG_NETFILTER_XT_MATCH_MARK=y
        CONFIG_NETFILTER_XT_MATCH_POLICY=y
        CONFIG_NETFILTER_XT_MATCH_STATE=y
+++++ ++# CONFIG_IP_VS is not set
        
        #
        # IP: Netfilter Configuration
        #
+++++ ++CONFIG_NF_DEFRAG_IPV4=y
        CONFIG_NF_CONNTRACK_IPV4=y
        CONFIG_NF_CONNTRACK_PROC_COMPAT=y
        CONFIG_IP_NF_IPTABLES=y
@@@@@@@@@ -594,8 -595,8 -595,8 -595,8 -595,8 -619,8 -595,8 -595,8 +618,8 @@@@@@@@@ CONFIG_IP_NF_MANGLE=
        CONFIG_NF_CONNTRACK_IPV6=y
        CONFIG_IP6_NF_IPTABLES=y
        CONFIG_IP6_NF_MATCH_IPV6HEADER=y
----- --CONFIG_IP6_NF_FILTER=y
        CONFIG_IP6_NF_TARGET_LOG=y
+++++ ++CONFIG_IP6_NF_FILTER=y
        CONFIG_IP6_NF_TARGET_REJECT=y
        CONFIG_IP6_NF_MANGLE=y
        # CONFIG_IP_DCCP is not set
        # CONFIG_TIPC is not set
        # CONFIG_ATM is not set
        # CONFIG_BRIDGE is not set
+++++ ++# CONFIG_NET_DSA is not set
        # CONFIG_VLAN_8021Q is not set
        # CONFIG_DECNET is not set
        CONFIG_LLC=y
@@@@@@@@@ -622,6 -623,6 -623,6 -623,6 -623,6 -648,7 -623,6 -623,6 +647,7 @@@@@@@@@ CONFIG_NET_SCHED=
        # CONFIG_NET_SCH_HTB is not set
        # CONFIG_NET_SCH_HFSC is not set
        # CONFIG_NET_SCH_PRIO is not set
+++++ ++# CONFIG_NET_SCH_MULTIQ is not set
        # CONFIG_NET_SCH_RED is not set
        # CONFIG_NET_SCH_SFQ is not set
        # CONFIG_NET_SCH_TEQL is not set
        # CONFIG_NET_SCH_GRED is not set
        # CONFIG_NET_SCH_DSMARK is not set
        # CONFIG_NET_SCH_NETEM is not set
+++++ ++# CONFIG_NET_SCH_DRR is not set
        # CONFIG_NET_SCH_INGRESS is not set
        
        #
@@@@@@@@@ -643,6 -644,6 -644,6 -644,6 -644,6 -671,7 -644,6 -644,6 +670,7 @@@@@@@@@ CONFIG_NET_CLS=
        # CONFIG_NET_CLS_RSVP is not set
        # CONFIG_NET_CLS_RSVP6 is not set
        # CONFIG_NET_CLS_FLOW is not set
+++++ ++# CONFIG_NET_CLS_CGROUP is not set
        CONFIG_NET_EMATCH=y
        CONFIG_NET_EMATCH_STACK=32
        # CONFIG_NET_EMATCH_CMP is not set
@@@@@@@@@ -658,7 -659,7 -659,7 -659,7 -659,7 -687,9 -659,7 -659,7 +686,9 @@@@@@@@@ CONFIG_NET_CLS_ACT=
        # CONFIG_NET_ACT_NAT is not set
        # CONFIG_NET_ACT_PEDIT is not set
        # CONFIG_NET_ACT_SIMP is not set
+++++ ++# CONFIG_NET_ACT_SKBEDIT is not set
        CONFIG_NET_SCH_FIFO=y
+++++ ++# CONFIG_DCB is not set
        
        #
        # Network testing
@@@@@@@@@ -675,29 -676,29 -676,29 -676,29 -676,29 -706,33 -676,29 -676,29 +705,33 @@@@@@@@@ CONFIG_HAMRADIO=
        # CONFIG_IRDA is not set
        # CONFIG_BT is not set
        # CONFIG_AF_RXRPC is not set
+++++ ++# CONFIG_PHONET is not set
        CONFIG_FIB_RULES=y
----- --
----- --#
----- --# Wireless
----- --#
+++++ ++CONFIG_WIRELESS=y
        CONFIG_CFG80211=y
+++++ ++# CONFIG_CFG80211_REG_DEBUG is not set
        CONFIG_NL80211=y
+++++ ++CONFIG_WIRELESS_OLD_REGULATORY=y
        CONFIG_WIRELESS_EXT=y
        CONFIG_WIRELESS_EXT_SYSFS=y
+++++ ++# CONFIG_LIB80211 is not set
        CONFIG_MAC80211=y
        
        #
        # Rate control algorithm selection
        #
----- --CONFIG_MAC80211_RC_PID=y
----- --CONFIG_MAC80211_RC_DEFAULT_PID=y
----- --CONFIG_MAC80211_RC_DEFAULT="pid"
+++++ ++CONFIG_MAC80211_RC_MINSTREL=y
+++++ ++# CONFIG_MAC80211_RC_DEFAULT_PID is not set
+++++ ++CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+++++ ++CONFIG_MAC80211_RC_DEFAULT="minstrel"
        # CONFIG_MAC80211_MESH is not set
        CONFIG_MAC80211_LEDS=y
        # CONFIG_MAC80211_DEBUGFS is not set
        # CONFIG_MAC80211_DEBUG_MENU is not set
----- --# CONFIG_IEEE80211 is not set
----- --# CONFIG_RFKILL is not set
+++++ ++# CONFIG_WIMAX is not set
+++++ ++CONFIG_RFKILL=y
+++++ ++# CONFIG_RFKILL_INPUT is not set
+++++ ++CONFIG_RFKILL_LEDS=y
        # CONFIG_NET_9P is not set
        
        #
@@@@@@@@@ -721,7 -722,7 -722,7 -722,7 -722,7 -756,7 -722,7 -722,7 +755,7 @@@@@@@@@ CONFIG_PROC_EVENTS=
        # CONFIG_MTD is not set
        # CONFIG_PARPORT is not set
        CONFIG_PNP=y
----- --# CONFIG_PNP_DEBUG is not set
+++++ ++CONFIG_PNP_DEBUG_MESSAGES=y
        
        #
        # Protocols
@@@@@@@@@ -749,20 -750,20 -750,20 -750,20 -750,20 -784,19 -750,20 -750,20 +783,19 @@@@@@@@@ CONFIG_BLK_DEV_RAM_SIZE=1638
        CONFIG_MISC_DEVICES=y
        # CONFIG_IBM_ASM is not set
        # CONFIG_PHANTOM is not set
----- --# CONFIG_EEPROM_93CX6 is not set
        # CONFIG_SGI_IOC4 is not set
        # CONFIG_TIFM_CORE is not set
----- --# CONFIG_ACER_WMI is not set
----- --# CONFIG_ASUS_LAPTOP is not set
----- --# CONFIG_FUJITSU_LAPTOP is not set
----- --# CONFIG_TC1100_WMI is not set
----- --# CONFIG_MSI_LAPTOP is not set
----- --# CONFIG_COMPAL_LAPTOP is not set
----- --# CONFIG_SONY_LAPTOP is not set
----- --# CONFIG_THINKPAD_ACPI is not set
----- --# CONFIG_INTEL_MENLOW is not set
+++++ ++# CONFIG_ICS932S401 is not set
        # CONFIG_ENCLOSURE_SERVICES is not set
        # CONFIG_HP_ILO is not set
+++++ ++# CONFIG_C2PORT is not set
+++++ ++
+++++ ++#
+++++ ++# EEPROM support
+++++ ++#
+++++ ++# CONFIG_EEPROM_AT24 is not set
+++++ ++# CONFIG_EEPROM_LEGACY is not set
+++++ ++# CONFIG_EEPROM_93CX6 is not set
        CONFIG_HAVE_IDE=y
        # CONFIG_IDE is not set
        
@@@@@@@@@ -801,7 -802,7 -802,7 -802,7 -802,7 -835,7 -802,7 -802,7 +834,7 @@@@@@@@@ CONFIG_SCSI_WAIT_SCAN=
        #
        CONFIG_SCSI_SPI_ATTRS=y
        # CONFIG_SCSI_FC_ATTRS is not set
----- --CONFIG_SCSI_ISCSI_ATTRS=y
+++++ ++# CONFIG_SCSI_ISCSI_ATTRS is not set
        # CONFIG_SCSI_SAS_ATTRS is not set
        # CONFIG_SCSI_SAS_LIBSAS is not set
        # CONFIG_SCSI_SRP_ATTRS is not set
@@@@@@@@@ -874,6 -875,6 -875,6 -875,6 -875,6 -908,7 -875,6 -875,6 +907,7 @@@@@@@@@ CONFIG_PATA_OLDPIIX=
        CONFIG_PATA_SCH=y
        CONFIG_MD=y
        CONFIG_BLK_DEV_MD=y
+++++ ++CONFIG_MD_AUTODETECT=y
        # CONFIG_MD_LINEAR is not set
        # CONFIG_MD_RAID0 is not set
        # CONFIG_MD_RAID1 is not set
@@@@@@@@@ -929,6 -930,6 -930,6 -930,6 -930,6 -964,9 -930,6 -930,6 +963,9 @@@@@@@@@ CONFIG_PHYLIB=
        # CONFIG_BROADCOM_PHY is not set
        # CONFIG_ICPLUS_PHY is not set
        # CONFIG_REALTEK_PHY is not set
+++++ ++# CONFIG_NATIONAL_PHY is not set
+++++ ++# CONFIG_STE10XP is not set
+++++ ++# CONFIG_LSI_ET1011C_PHY is not set
        # CONFIG_FIXED_PHY is not set
        # CONFIG_MDIO_BITBANG is not set
        CONFIG_NET_ETHERNET=y
@@@@@@@@@ -952,6 -953,6 -953,6 -953,6 -953,6 -990,9 -953,6 -953,6 +989,9 @@@@@@@@@ CONFIG_NET_TULIP=
        # 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_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+++++ ++# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+++++ ++# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
        CONFIG_NET_PCI=y
        # CONFIG_PCNET32 is not set
        # CONFIG_AMD8111_ETH is not set
        # CONFIG_B44 is not set
        CONFIG_FORCEDETH=y
        # CONFIG_FORCEDETH_NAPI is not set
----- --# CONFIG_EEPRO100 is not set
        CONFIG_E100=y
        # CONFIG_FEALNX is not set
        # CONFIG_NATSEMI is not set
@@@@@@@@@ -973,15 -974,15 -974,15 -974,15 -974,15 -1013,16 -974,15 -974,15 +1012,16 @@@@@@@@@ CONFIG_8139TOO=
        # CONFIG_R6040 is not set
        # CONFIG_SIS900 is not set
        # CONFIG_EPIC100 is not set
+++++ ++# CONFIG_SMSC9420 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_ATL2 is not set
        CONFIG_NETDEV_1000=y
        # CONFIG_ACENIC is not set
        # CONFIG_DL2K is not set
        CONFIG_E1000=y
----- --# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
        CONFIG_E1000E=y
        # CONFIG_IP1000 is not set
        # CONFIG_IGB is not set
        # CONFIG_QLA3XXX is not set
        # CONFIG_ATL1 is not set
        # CONFIG_ATL1E is not set
+++++ ++# CONFIG_JME is not set
        CONFIG_NETDEV_10000=y
        # CONFIG_CHELSIO_T1 is not set
+++++ ++CONFIG_CHELSIO_T3_DEPENDS=y
        # CONFIG_CHELSIO_T3 is not set
+++++ ++# CONFIG_ENIC is not set
        # CONFIG_IXGBE is not set
        # CONFIG_IXGB is not set
        # CONFIG_S2IO is not set
        # CONFIG_MYRI10GE is not set
        # CONFIG_NETXEN_NIC is not set
        # CONFIG_NIU is not set
+++++ ++# CONFIG_MLX4_EN is not set
        # CONFIG_MLX4_CORE is not set
        # CONFIG_TEHUTI is not set
        # CONFIG_BNX2X is not set
+++++ ++# CONFIG_QLGE is not set
        # CONFIG_SFC is not set
        CONFIG_TR=y
        # CONFIG_IBMOL is not set
        # CONFIG_WLAN_PRE80211 is not set
        CONFIG_WLAN_80211=y
        # CONFIG_PCMCIA_RAYCS is not set
----- --# CONFIG_IPW2100 is not set
----- --# CONFIG_IPW2200 is not set
        # CONFIG_LIBERTAS is not set
+++++ ++# CONFIG_LIBERTAS_THINFIRM is not set
        # CONFIG_AIRO is not set
        # CONFIG_HERMES is not set
        # CONFIG_ATMEL is not set
        CONFIG_ATH5K=y
        # CONFIG_ATH5K_DEBUG is not set
        # CONFIG_ATH9K is not set
+++++ ++# CONFIG_IPW2100 is not set
+++++ ++# CONFIG_IPW2200 is not set
        # CONFIG_IWLCORE is not set
        # CONFIG_IWLWIFI_LEDS is not set
        # CONFIG_IWLAGN is not set
        # CONFIG_ZD1211RW is not set
        # CONFIG_RT2X00 is not set
        
+++++ ++#
+++++ ++# Enable WiMAX (Networking options) to see the WiMAX drivers
+++++ ++#
+++++ ++
        #
        # USB Network Adapters
        #
        # CONFIG_USB_PEGASUS is not set
        # CONFIG_USB_RTL8150 is not set
        # CONFIG_USB_USBNET is not set
+++++ ++# CONFIG_USB_HSO is not set
        CONFIG_NET_PCMCIA=y
        # CONFIG_PCMCIA_3C589 is not set
        # CONFIG_PCMCIA_3C574 is not set
@@@@@@@@@ -1122,6 -1123,6 -1123,6 -1123,6 -1123,6 -1174,7 -1123,6 -1123,6 +1173,7 @@@@@@@@@ CONFIG_MOUSE_PS2_LOGIPS2PP=
        CONFIG_MOUSE_PS2_SYNAPTICS=y
        CONFIG_MOUSE_PS2_LIFEBOOK=y
        CONFIG_MOUSE_PS2_TRACKPOINT=y
+++++ ++# CONFIG_MOUSE_PS2_ELANTECH is not set
        # CONFIG_MOUSE_PS2_TOUCHKIT is not set
        # CONFIG_MOUSE_SERIAL is not set
        # CONFIG_MOUSE_APPLETOUCH is not set
@@@@@@@@@ -1159,15 -1160,15 -1160,15 -1160,15 -1160,15 -1212,16 -1160,15 -1160,15 +1211,16 @@@@@@@@@ CONFIG_INPUT_TOUCHSCREEN=
        # CONFIG_TOUCHSCREEN_FUJITSU is not set
        # CONFIG_TOUCHSCREEN_GUNZE is not set
        # CONFIG_TOUCHSCREEN_ELO is not set
+++++ ++# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
        # CONFIG_TOUCHSCREEN_MTOUCH is not set
        # CONFIG_TOUCHSCREEN_INEXIO is not set
        # CONFIG_TOUCHSCREEN_MK712 is not set
        # CONFIG_TOUCHSCREEN_PENMOUNT is not set
        # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
        # CONFIG_TOUCHSCREEN_TOUCHWIN is not set
----- --# CONFIG_TOUCHSCREEN_UCB1400 is not set
        # CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
        # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+++++ ++# CONFIG_TOUCHSCREEN_TSC2007 is not set
        CONFIG_INPUT_MISC=y
        # CONFIG_INPUT_PCSPKR is not set
        # CONFIG_INPUT_APANEL is not set
        # CONFIG_INPUT_KEYSPAN_REMOTE is not set
        # CONFIG_INPUT_POWERMATE is not set
        # CONFIG_INPUT_YEALINK is not set
+++++ ++# CONFIG_INPUT_CM109 is not set
        # CONFIG_INPUT_UINPUT is not set
        
        #
@@@@@@@@@ -1244,6 -1245,6 -1245,6 -1245,6 -1245,6 -1299,7 -1245,6 -1245,6 +1298,7 @@@@@@@@@ CONFIG_SERIAL_CORE=
        CONFIG_SERIAL_CORE_CONSOLE=y
        # CONFIG_SERIAL_JSM is not set
        CONFIG_UNIX98_PTYS=y
+++++ ++# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
        # CONFIG_LEGACY_PTYS is not set
        # CONFIG_IPMI_HANDLER is not set
        CONFIG_HW_RANDOM=y
        CONFIG_I2C_BOARDINFO=y
        # CONFIG_I2C_CHARDEV is not set
        CONFIG_I2C_HELPER_AUTO=y
+++++ ++CONFIG_I2C_ALGOBIT=y
        
        #
        # I2C Hardware Bus support
@@@@@@@@@ -1330,8 -1331,8 -1331,8 -1331,8 -1331,8 -1387,6 -1331,8 -1331,8 +1386,6 @@@@@@@@@ CONFIG_I2C_I801=
        # Miscellaneous I2C Chip support
        #
        # CONFIG_DS1682 is not set
--    --# CONFIG_EEPROM_AT24 is not set
--    --# CONFIG_EEPROM_LEGACY is not set
  ---   # CONFIG_AT24 is not set
  ---   # CONFIG_SENSORS_EEPROM is not set
        # CONFIG_SENSORS_PCF8574 is not set
        # CONFIG_PCF8575 is not set
        # CONFIG_SENSORS_PCA9539 is not set
@@@@@@@@@ -1350,8 -1351,8 -1351,8 -1351,8 -1351,8 -1405,78 -1351,8 -1351,8 +1404,78 @@@@@@@@@ CONFIG_POWER_SUPPLY=
        # CONFIG_POWER_SUPPLY_DEBUG is not set
        # CONFIG_PDA_POWER is not set
        # CONFIG_BATTERY_DS2760 is not set
----- --# CONFIG_HWMON is not set
+++++ ++# CONFIG_BATTERY_BQ27x00 is not set
+++++ ++CONFIG_HWMON=y
+++++ ++# CONFIG_HWMON_VID is not set
+++++ ++# CONFIG_SENSORS_ABITUGURU is not set
+++++ ++# CONFIG_SENSORS_ABITUGURU3 is not set
+++++ ++# CONFIG_SENSORS_AD7414 is not set
+++++ ++# CONFIG_SENSORS_AD7418 is not set
+++++ ++# CONFIG_SENSORS_ADM1021 is not set
+++++ ++# CONFIG_SENSORS_ADM1025 is not set
+++++ ++# CONFIG_SENSORS_ADM1026 is not set
+++++ ++# CONFIG_SENSORS_ADM1029 is not set
+++++ ++# CONFIG_SENSORS_ADM1031 is not set
+++++ ++# CONFIG_SENSORS_ADM9240 is not set
+++++ ++# CONFIG_SENSORS_ADT7462 is not set
+++++ ++# CONFIG_SENSORS_ADT7470 is not set
+++++ ++# CONFIG_SENSORS_ADT7473 is not set
+++++ ++# CONFIG_SENSORS_ADT7475 is not set
+++++ ++# CONFIG_SENSORS_K8TEMP is not set
+++++ ++# CONFIG_SENSORS_ASB100 is not set
+++++ ++# CONFIG_SENSORS_ATXP1 is not set
+++++ ++# CONFIG_SENSORS_DS1621 is not set
+++++ ++# CONFIG_SENSORS_I5K_AMB is not set
+++++ ++# CONFIG_SENSORS_F71805F is not set
+++++ ++# CONFIG_SENSORS_F71882FG is not set
+++++ ++# CONFIG_SENSORS_F75375S is not set
+++++ ++# CONFIG_SENSORS_FSCHER is not set
+++++ ++# CONFIG_SENSORS_FSCPOS is not set
+++++ ++# CONFIG_SENSORS_FSCHMD is not set
+++++ ++# CONFIG_SENSORS_GL518SM is not set
+++++ ++# CONFIG_SENSORS_GL520SM is not set
+++++ ++# CONFIG_SENSORS_CORETEMP is not set
+++++ ++# CONFIG_SENSORS_IT87 is not set
+++++ ++# CONFIG_SENSORS_LM63 is not set
+++++ ++# CONFIG_SENSORS_LM75 is not set
+++++ ++# CONFIG_SENSORS_LM77 is not set
+++++ ++# CONFIG_SENSORS_LM78 is not set
+++++ ++# CONFIG_SENSORS_LM80 is not set
+++++ ++# CONFIG_SENSORS_LM83 is not set
+++++ ++# CONFIG_SENSORS_LM85 is not set
+++++ ++# CONFIG_SENSORS_LM87 is not set
+++++ ++# CONFIG_SENSORS_LM90 is not set
+++++ ++# CONFIG_SENSORS_LM92 is not set
+++++ ++# CONFIG_SENSORS_LM93 is not set
+++++ ++# CONFIG_SENSORS_LTC4245 is not set
+++++ ++# CONFIG_SENSORS_MAX1619 is not set
+++++ ++# CONFIG_SENSORS_MAX6650 is not set
+++++ ++# CONFIG_SENSORS_PC87360 is not set
+++++ ++# CONFIG_SENSORS_PC87427 is not set
+++++ ++# CONFIG_SENSORS_SIS5595 is not set
+++++ ++# CONFIG_SENSORS_DME1737 is not set
+++++ ++# CONFIG_SENSORS_SMSC47M1 is not set
+++++ ++# CONFIG_SENSORS_SMSC47M192 is not set
+++++ ++# CONFIG_SENSORS_SMSC47B397 is not set
+++++ ++# CONFIG_SENSORS_ADS7828 is not set
+++++ ++# CONFIG_SENSORS_THMC50 is not set
+++++ ++# CONFIG_SENSORS_VIA686A is not set
+++++ ++# CONFIG_SENSORS_VT1211 is not set
+++++ ++# CONFIG_SENSORS_VT8231 is not set
+++++ ++# CONFIG_SENSORS_W83781D is not set
+++++ ++# CONFIG_SENSORS_W83791D is not set
+++++ ++# CONFIG_SENSORS_W83792D is not set
+++++ ++# CONFIG_SENSORS_W83793 is not set
+++++ ++# CONFIG_SENSORS_W83L785TS is not set
+++++ ++# CONFIG_SENSORS_W83L786NG is not set
+++++ ++# CONFIG_SENSORS_W83627HF is not set
+++++ ++# CONFIG_SENSORS_W83627EHF is not set
+++++ ++# CONFIG_SENSORS_HDAPS is not set
+++++ ++# CONFIG_SENSORS_LIS3LV02D is not set
+++++ ++# CONFIG_SENSORS_APPLESMC is not set
+++++ ++# CONFIG_HWMON_DEBUG_CHIP is not set
        CONFIG_THERMAL=y
+++++ ++# CONFIG_THERMAL_HWMON is not set
        CONFIG_WATCHDOG=y
        # CONFIG_WATCHDOG_NOWAYOUT is not set
        
        # CONFIG_I6300ESB_WDT is not set
        # CONFIG_ITCO_WDT is not set
        # CONFIG_IT8712F_WDT is not set
+++++ ++# CONFIG_IT87_WDT is not set
        # CONFIG_HP_WATCHDOG is not set
        # CONFIG_SC1200_WDT is not set
        # CONFIG_PC87413_WDT is not set
        # CONFIG_SBC8360_WDT is not set
        # CONFIG_SBC7240_WDT is not set
        # CONFIG_CPU5_WDT is not set
+++++ ++# CONFIG_SMSC_SCH311X_WDT is not set
        # CONFIG_SMSC37B787_WDT is not set
        # CONFIG_W83627HF_WDT is not set
        # CONFIG_W83697HF_WDT is not set
+++++ ++# CONFIG_W83697UG_WDT is not set
        # CONFIG_W83877F_WDT is not set
        # CONFIG_W83977F_WDT is not set
        # CONFIG_MACHZ_WDT is not set
        # USB-based Watchdog Cards
        #
        # CONFIG_USBPCWATCHDOG is not set
+++++ ++CONFIG_SSB_POSSIBLE=y
        
        #
        # Sonics Silicon Backplane
        #
----- --CONFIG_SSB_POSSIBLE=y
        # CONFIG_SSB is not set
        
        #
        # CONFIG_MFD_CORE is not set
        # CONFIG_MFD_SM501 is not set
        # CONFIG_HTC_PASIC3 is not set
+++++ ++# CONFIG_TWL4030_CORE is not set
        # CONFIG_MFD_TMIO is not set
+++++ ++# CONFIG_PMIC_DA903X is not set
+++++ ++# CONFIG_MFD_WM8400 is not set
+++++ ++# CONFIG_MFD_WM8350_I2C is not set
+++++ ++# CONFIG_MFD_PCF50633 is not set
+++++ ++# CONFIG_REGULATOR is not set
        
        #
        # Multimedia devices
        # CONFIG_DRM_I810 is not set
        # CONFIG_DRM_I830 is not set
        CONFIG_DRM_I915=y
+++++ ++# CONFIG_DRM_I915_KMS is not set
        # CONFIG_DRM_MGA is not set
        # CONFIG_DRM_SIS is not set
        # CONFIG_DRM_VIA is not set
        CONFIG_FB=y
        # CONFIG_FIRMWARE_EDID is not set
        # CONFIG_FB_DDC is not set
+++++ ++# CONFIG_FB_BOOT_VESA_SUPPORT is not set
        CONFIG_FB_CFB_FILLRECT=y
        CONFIG_FB_CFB_COPYAREA=y
        CONFIG_FB_CFB_IMAGEBLIT=y
@@@@@@@@@ -1486,7 -1487,7 -1487,7 -1487,7 -1487,7 -1622,6 -1487,7 -1487,7 +1621,6 @@@@@@@@@ CONFIG_FB_TILEBLITTING=
        # CONFIG_FB_UVESA is not set
        # CONFIG_FB_VESA is not set
        CONFIG_FB_EFI=y
----- --# CONFIG_FB_IMAC is not set
        # CONFIG_FB_N411 is not set
        # CONFIG_FB_HGA is not set
        # CONFIG_FB_S1D13XXX is not set
        # CONFIG_FB_S3 is not set
        # CONFIG_FB_SAVAGE is not set
        # CONFIG_FB_SIS is not set
+++++ ++# CONFIG_FB_VIA is not set
        # CONFIG_FB_NEOMAGIC is not set
        # CONFIG_FB_KYRO is not set
        # CONFIG_FB_3DFX is not set
        # CONFIG_FB_CARMINE is not set
        # CONFIG_FB_GEODE is not set
        # CONFIG_FB_VIRTUAL is not set
+++++ ++# CONFIG_FB_METRONOME is not set
+++++ ++# CONFIG_FB_MB862XX is not set
        CONFIG_BACKLIGHT_LCD_SUPPORT=y
        # CONFIG_LCD_CLASS_DEVICE is not set
        CONFIG_BACKLIGHT_CLASS_DEVICE=y
----- --# CONFIG_BACKLIGHT_CORGI is not set
+++++ ++CONFIG_BACKLIGHT_GENERIC=y
        # CONFIG_BACKLIGHT_PROGEAR is not set
        # CONFIG_BACKLIGHT_MBP_NVIDIA is not set
+++++ ++# CONFIG_BACKLIGHT_SAHARA is not set
        
        #
        # Display device support
        # CONFIG_LOGO_LINUX_VGA16 is not set
        CONFIG_LOGO_LINUX_CLUT224=y
        CONFIG_SOUND=y
+++++ ++CONFIG_SOUND_OSS_CORE=y
        CONFIG_SND=y
        CONFIG_SND_TIMER=y
        CONFIG_SND_PCM=y
        CONFIG_SND_HWDEP=y
+++++ ++CONFIG_SND_JACK=y
        CONFIG_SND_SEQUENCER=y
        CONFIG_SND_SEQ_DUMMY=y
        CONFIG_SND_OSSEMUL=y
@@@@@@@@@ -1550,6 -1551,6 -1551,6 -1551,6 -1551,6 -1691,8 -1551,6 -1551,6 +1690,8 @@@@@@@@@ CONFIG_SND_MIXER_OSS=
        CONFIG_SND_PCM_OSS=y
        CONFIG_SND_PCM_OSS_PLUGINS=y
        CONFIG_SND_SEQUENCER_OSS=y
+++++ ++CONFIG_SND_HRTIMER=y
+++++ ++CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
        CONFIG_SND_DYNAMIC_MINORS=y
        CONFIG_SND_SUPPORT_OLD_API=y
        CONFIG_SND_VERBOSE_PROCFS=y
        # CONFIG_SND_FM801 is not set
        CONFIG_SND_HDA_INTEL=y
        CONFIG_SND_HDA_HWDEP=y
+++++ ++# CONFIG_SND_HDA_RECONFIG is not set
+++++ ++# CONFIG_SND_HDA_INPUT_BEEP 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_NVHDMI=y
+++++ ++CONFIG_SND_HDA_CODEC_INTELHDMI=y
+++++ ++CONFIG_SND_HDA_ELD=y
        CONFIG_SND_HDA_CODEC_CONEXANT=y
        CONFIG_SND_HDA_CODEC_CMEDIA=y
        CONFIG_SND_HDA_CODEC_SI3054=y
@@@@@@@@@ -1642,6 -1643,6 -1643,6 -1643,6 -1643,6 -1790,7 -1643,6 -1643,6 +1789,7 @@@@@@@@@ CONFIG_SND_USB=
        # CONFIG_SND_USB_AUDIO is not set
        # CONFIG_SND_USB_USX2Y is not set
        # CONFIG_SND_USB_CAIAQ is not set
+++++ ++# CONFIG_SND_USB_US122L is not set
        CONFIG_SND_PCMCIA=y
        # CONFIG_SND_VXPOCKET is not set
        # CONFIG_SND_PDAUDIOCF is not set
        # USB Input Devices
        #
        CONFIG_USB_HID=y
----- --CONFIG_USB_HIDINPUT_POWERBOOK=y
----- --CONFIG_HID_FF=y
        CONFIG_HID_PID=y
+++++ ++CONFIG_USB_HIDDEV=y
+++++ ++
+++++ ++#
+++++ ++# Special HID drivers
+++++ ++#
+++++ ++CONFIG_HID_COMPAT=y
+++++ ++CONFIG_HID_A4TECH=y
+++++ ++CONFIG_HID_APPLE=y
+++++ ++CONFIG_HID_BELKIN=y
+++++ ++CONFIG_HID_CHERRY=y
+++++ ++CONFIG_HID_CHICONY=y
+++++ ++CONFIG_HID_CYPRESS=y
+++++ ++CONFIG_HID_EZKEY=y
+++++ ++CONFIG_HID_GYRATION=y
+++++ ++CONFIG_HID_LOGITECH=y
        CONFIG_LOGITECH_FF=y
        # CONFIG_LOGIRUMBLEPAD2_FF is not set
+++++ ++CONFIG_HID_MICROSOFT=y
+++++ ++CONFIG_HID_MONTEREY=y
+++++ ++CONFIG_HID_NTRIG=y
+++++ ++CONFIG_HID_PANTHERLORD=y
        CONFIG_PANTHERLORD_FF=y
+++++ ++CONFIG_HID_PETALYNX=y
+++++ ++CONFIG_HID_SAMSUNG=y
+++++ ++CONFIG_HID_SONY=y
+++++ ++CONFIG_HID_SUNPLUS=y
+++++ ++# CONFIG_GREENASIA_FF is not set
+++++ ++CONFIG_HID_TOPSEED=y
        CONFIG_THRUSTMASTER_FF=y
        CONFIG_ZEROPLUS_FF=y
----- --CONFIG_USB_HIDDEV=y
        CONFIG_USB_SUPPORT=y
        CONFIG_USB_ARCH_HAS_HCD=y
        CONFIG_USB_ARCH_HAS_OHCI=y
@@@@@@@@@ -1682,6 -1683,6 -1683,6 -1683,6 -1683,6 -1853,8 -1683,6 -1683,6 +1852,8 @@@@@@@@@ CONFIG_USB_DEVICEFS=
        CONFIG_USB_SUSPEND=y
        # CONFIG_USB_OTG is not set
        CONFIG_USB_MON=y
+++++ ++# CONFIG_USB_WUSB is not set
+++++ ++# CONFIG_USB_WUSB_CBAF is not set
        
        #
        # USB Host Controller Drivers
        CONFIG_USB_EHCI_HCD=y
        # CONFIG_USB_EHCI_ROOT_HUB_TT is not set
        # CONFIG_USB_EHCI_TT_NEWSCHED is not set
+++++ ++# CONFIG_USB_OXU210HP_HCD is not set
        # CONFIG_USB_ISP116X_HCD is not set
        # CONFIG_USB_ISP1760_HCD is not set
        CONFIG_USB_OHCI_HCD=y
@@@@@@@@@ -1699,6 -1700,6 -1700,6 -1700,6 -1700,6 -1873,8 -1700,6 -1700,6 +1872,8 @@@@@@@@@ CONFIG_USB_OHCI_LITTLE_ENDIAN=
        CONFIG_USB_UHCI_HCD=y
        # CONFIG_USB_SL811_HCD is not set
        # CONFIG_USB_R8A66597_HCD is not set
+++++ ++# CONFIG_USB_WHCI_HCD is not set
+++++ ++# CONFIG_USB_HWA_HCD is not set
        
        #
        # USB Device Class drivers
        # CONFIG_USB_ACM is not set
        CONFIG_USB_PRINTER=y
        # CONFIG_USB_WDM is not set
+++++ ++# CONFIG_USB_TMC is not set
        
        #
----- --# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+++++ ++# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
        #
        
        #
----- --# may also be needed; see USB_STORAGE Help for more information
+++++ ++# see USB_STORAGE Help for more information
        #
        CONFIG_USB_STORAGE=y
        # CONFIG_USB_STORAGE_DEBUG is not set
        # CONFIG_USB_STORAGE_DATAFAB is not set
        # CONFIG_USB_STORAGE_FREECOM is not set
        # CONFIG_USB_STORAGE_ISD200 is not set
----- --# CONFIG_USB_STORAGE_DPCM is not set
        # CONFIG_USB_STORAGE_USBAT is not set
        # CONFIG_USB_STORAGE_SDDR09 is not set
        # CONFIG_USB_STORAGE_SDDR55 is not set
        # CONFIG_USB_STORAGE_ALAUDA is not set
        # CONFIG_USB_STORAGE_ONETOUCH is not set
        # CONFIG_USB_STORAGE_KARMA is not set
----- --# CONFIG_USB_STORAGE_SIERRA is not set
        # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
        CONFIG_USB_LIBUSUAL=y
        
        # CONFIG_USB_EMI62 is not set
        # CONFIG_USB_EMI26 is not set
        # CONFIG_USB_ADUTUX is not set
+++++ ++# CONFIG_USB_SEVSEG is not set
        # CONFIG_USB_RIO500 is not set
        # CONFIG_USB_LEGOTOWER is not set
        # CONFIG_USB_LCD is not set
        # CONFIG_USB_IOWARRIOR is not set
        # CONFIG_USB_TEST is not set
        # CONFIG_USB_ISIGHTFW is not set
+++++ ++# CONFIG_USB_VST is not set
        # CONFIG_USB_GADGET is not set
+++++ ++
+++++ ++#
+++++ ++# OTG and related infrastructure
+++++ ++#
+++++ ++# CONFIG_UWB is not set
        # CONFIG_MMC is not set
        # CONFIG_MEMSTICK is not set
        CONFIG_NEW_LEDS=y
@@@@@@@@@ -1774,6 -1775,6 -1775,6 -1775,6 -1775,6 -1956,7 -1775,6 -1775,6 +1955,7 @@@@@@@@@ CONFIG_LEDS_CLASS=
        #
        # LED drivers
        #
+++++ ++# CONFIG_LEDS_ALIX2 is not set
        # CONFIG_LEDS_PCA9532 is not set
        # CONFIG_LEDS_CLEVO_MAIL is not set
        # CONFIG_LEDS_PCA955X is not set
        CONFIG_LEDS_TRIGGERS=y
        # CONFIG_LEDS_TRIGGER_TIMER is not set
        # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+++++ ++# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
        # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
        # CONFIG_ACCESSIBILITY is not set
        # CONFIG_INFINIBAND is not set
@@@@@@@@@ -1823,6 -1824,6 -1824,6 -1824,6 -1824,6 -2007,7 -1824,6 -1824,6 +2006,7 @@@@@@@@@ CONFIG_RTC_INTF_DEV=
        # CONFIG_RTC_DRV_M41T80 is not set
        # CONFIG_RTC_DRV_S35390A is not set
        # CONFIG_RTC_DRV_FM3130 is not set
+++++ ++# CONFIG_RTC_DRV_RX8581 is not set
        
        #
        # SPI RTC drivers
        # Platform RTC drivers
        #
        CONFIG_RTC_DRV_CMOS=y
+++++ ++# CONFIG_RTC_DRV_DS1286 is not set
        # CONFIG_RTC_DRV_DS1511 is not set
        # CONFIG_RTC_DRV_DS1553 is not set
        # CONFIG_RTC_DRV_DS1742 is not set
        # CONFIG_RTC_DRV_STK17TA8 is not set
        # CONFIG_RTC_DRV_M48T86 is not set
+++++ ++# CONFIG_RTC_DRV_M48T35 is not set
        # CONFIG_RTC_DRV_M48T59 is not set
+++++ ++# CONFIG_RTC_DRV_BQ4802 is not set
        # CONFIG_RTC_DRV_V3020 is not set
        
        #
@@@@@@@@@ -1850,6 -1851,6 -1851,6 -1851,6 -1851,6 -2038,22 -1851,6 -1851,6 +2037,22 @@@@@@@@@ CONFIG_DMADEVICES=
        #
        # CONFIG_INTEL_IOATDMA is not set
        # CONFIG_UIO is not set
+++++ ++# CONFIG_STAGING is not set
+++++ ++CONFIG_X86_PLATFORM_DEVICES=y
+++++ ++# CONFIG_ACER_WMI is not set
+++++ ++# CONFIG_ASUS_LAPTOP is not set
+++++ ++# CONFIG_FUJITSU_LAPTOP is not set
+++++ ++# CONFIG_TC1100_WMI is not set
+++++ ++# CONFIG_MSI_LAPTOP is not set
+++++ ++# CONFIG_PANASONIC_LAPTOP is not set
+++++ ++# CONFIG_COMPAL_LAPTOP is not set
+++++ ++# CONFIG_SONY_LAPTOP is not set
+++++ ++# CONFIG_THINKPAD_ACPI is not set
+++++ ++# CONFIG_INTEL_MENLOW is not set
+++++ ++CONFIG_EEEPC_LAPTOP=y
+++++ ++# CONFIG_ACPI_WMI is not set
+++++ ++# CONFIG_ACPI_ASUS is not set
+++++ ++# CONFIG_ACPI_TOSHIBA is not set
        
        #
        # Firmware Drivers
@@@@@@@@@ -1860,8 -1861,8 -1861,8 -1861,8 -1861,8 -2064,7 -1861,8 -1861,8 +2063,7 @@@@@@@@@ CONFIG_EFI_VARS=
        # CONFIG_DELL_RBU is not set
        # CONFIG_DCDBAS is not set
        CONFIG_DMIID=y
----- --CONFIG_ISCSI_IBFT_FIND=y
----- --CONFIG_ISCSI_IBFT=y
+++++ ++# CONFIG_ISCSI_IBFT_FIND is not set
        
        #
        # File systems
        CONFIG_EXT3_FS_XATTR=y
        CONFIG_EXT3_FS_POSIX_ACL=y
        CONFIG_EXT3_FS_SECURITY=y
----- --# CONFIG_EXT4DEV_FS is not set
+++++ ++# CONFIG_EXT4_FS is not set
        CONFIG_JBD=y
        # CONFIG_JBD_DEBUG is not set
        CONFIG_FS_MBCACHE=y
        # CONFIG_REISERFS_FS is not set
        # CONFIG_JFS_FS is not set
        CONFIG_FS_POSIX_ACL=y
+++++ ++CONFIG_FILE_LOCKING=y
        # CONFIG_XFS_FS is not set
        # CONFIG_OCFS2_FS is not set
+++++ ++# CONFIG_BTRFS_FS is not set
        CONFIG_DNOTIFY=y
        CONFIG_INOTIFY=y
        CONFIG_INOTIFY_USER=y
        CONFIG_QUOTA=y
        CONFIG_QUOTA_NETLINK_INTERFACE=y
        # CONFIG_PRINT_QUOTA_WARNING is not set
+++++ ++CONFIG_QUOTA_TREE=y
        # CONFIG_QFMT_V1 is not set
        CONFIG_QFMT_V2=y
        CONFIG_QUOTACTL=y
        CONFIG_PROC_KCORE=y
        CONFIG_PROC_VMCORE=y
        CONFIG_PROC_SYSCTL=y
+++++ ++CONFIG_PROC_PAGE_MONITOR=y
        CONFIG_SYSFS=y
        CONFIG_TMPFS=y
        CONFIG_TMPFS_POSIX_ACL=y
        CONFIG_HUGETLBFS=y
        CONFIG_HUGETLB_PAGE=y
        # CONFIG_CONFIGFS_FS is not set
----- --
----- --#
----- --# Miscellaneous filesystems
----- --#
+++++ ++CONFIG_MISC_FILESYSTEMS=y
        # CONFIG_ADFS_FS is not set
        # CONFIG_AFFS_FS is not set
        # CONFIG_ECRYPT_FS is not set
        # CONFIG_BFS_FS is not set
        # CONFIG_EFS_FS is not set
        # CONFIG_CRAMFS is not set
+++++ ++# CONFIG_SQUASHFS is not set
        # CONFIG_VXFS_FS is not set
        # CONFIG_MINIX_FS is not set
        # CONFIG_OMFS_FS is not set
@@@@@@@@@ -1959,6 -1960,6 -1960,6 -1960,6 -1960,6 -2164,7 -1960,6 -1960,6 +2163,7 @@@@@@@@@ CONFIG_NFS_ACL_SUPPORT=
        CONFIG_NFS_COMMON=y
        CONFIG_SUNRPC=y
        CONFIG_SUNRPC_GSS=y
+++++ ++# CONFIG_SUNRPC_REGISTER_V4 is not set
        CONFIG_RPCSEC_GSS_KRB5=y
        # CONFIG_RPCSEC_GSS_SPKM3 is not set
        # CONFIG_SMB_FS is not set
@@@@@@@@@ -2035,7 -2036,7 -2036,7 -2036,7 -2036,7 -2241,7 -2036,7 -2036,7 +2240,7 @@@@@@@@@ CONFIG_NLS_UTF8=
        #
        CONFIG_TRACE_IRQFLAGS_SUPPORT=y
        CONFIG_PRINTK_TIME=y
----- --CONFIG_ENABLE_WARN_DEPRECATED=y
+++++ ++# CONFIG_ENABLE_WARN_DEPRECATED is not set
        CONFIG_ENABLE_MUST_CHECK=y
        CONFIG_FRAME_WARN=2048
        CONFIG_MAGIC_SYSRQ=y
@@@@@@@@@ -2065,33 -2066,33 -2066,33 -2066,33 -2066,33 -2271,54 -2066,33 -2066,33 +2270,54 @@@@@@@@@ CONFIG_TIMER_STATS=
        CONFIG_DEBUG_BUGVERBOSE=y
        # CONFIG_DEBUG_INFO is not set
        # CONFIG_DEBUG_VM is not set
+++++ ++# CONFIG_DEBUG_VIRTUAL is not set
        # CONFIG_DEBUG_WRITECOUNT is not set
        CONFIG_DEBUG_MEMORY_INIT=y
        # CONFIG_DEBUG_LIST is not set
        # CONFIG_DEBUG_SG is not set
+++++ ++# CONFIG_DEBUG_NOTIFIERS is not set
+++++ ++CONFIG_ARCH_WANT_FRAME_POINTERS=y
        CONFIG_FRAME_POINTER=y
        # CONFIG_BOOT_PRINTK_DELAY is not set
        # CONFIG_RCU_TORTURE_TEST is not set
+++++ ++# CONFIG_RCU_CPU_STALL_DETECTOR is not set
        # CONFIG_KPROBES_SANITY_TEST is not set
        # CONFIG_BACKTRACE_SELF_TEST is not set
+++++ ++# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
        # CONFIG_LKDTM is not set
        # CONFIG_FAULT_INJECTION is not set
        # CONFIG_LATENCYTOP is not set
        CONFIG_SYSCTL_SYSCALL_CHECK=y
----- --CONFIG_HAVE_FTRACE=y
+++++ ++CONFIG_USER_STACKTRACE_SUPPORT=y
+++++ ++CONFIG_HAVE_FUNCTION_TRACER=y
+++++ ++CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+++++ ++CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
        CONFIG_HAVE_DYNAMIC_FTRACE=y
----- --# CONFIG_FTRACE is not set
+++++ ++CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+++++ ++CONFIG_HAVE_HW_BRANCH_TRACER=y
+++++ ++
+++++ ++#
+++++ ++# Tracers
+++++ ++#
+++++ ++# CONFIG_FUNCTION_TRACER is not set
        # CONFIG_IRQSOFF_TRACER is not set
        # CONFIG_SYSPROF_TRACER is not set
        # CONFIG_SCHED_TRACER is not set
        # CONFIG_CONTEXT_SWITCH_TRACER is not set
+++++ ++# CONFIG_BOOT_TRACER is not set
+++++ ++# CONFIG_TRACE_BRANCH_PROFILING is not set
+++++ ++# CONFIG_POWER_TRACER is not set
+++++ ++# CONFIG_STACK_TRACER is not set
+++++ ++# CONFIG_HW_BRANCH_TRACER is not set
        CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
+++++ ++# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
        # CONFIG_SAMPLES is not set
        CONFIG_HAVE_ARCH_KGDB=y
        # CONFIG_KGDB is not set
        # CONFIG_STRICT_DEVMEM is not set
        CONFIG_X86_VERBOSE_BOOTUP=y
        CONFIG_EARLY_PRINTK=y
+++++ ++CONFIG_EARLY_PRINTK_DBGP=y
        CONFIG_DEBUG_STACKOVERFLOW=y
        CONFIG_DEBUG_STACK_USAGE=y
        # CONFIG_DEBUG_PAGEALLOC is not set
@@@@@@@@@ -2122,8 -2123,8 -2123,8 -2123,8 -2123,8 -2349,10 -2123,8 -2123,8 +2348,10 @@@@@@@@@ CONFIG_OPTIMIZE_INLINING=
        CONFIG_KEYS=y
        CONFIG_KEYS_DEBUG_PROC_KEYS=y
        CONFIG_SECURITY=y
+++++ ++# CONFIG_SECURITYFS is not set
        CONFIG_SECURITY_NETWORK=y
        # CONFIG_SECURITY_NETWORK_XFRM is not set
+++++ ++# CONFIG_SECURITY_PATH is not set
        CONFIG_SECURITY_FILE_CAPABILITIES=y
        # CONFIG_SECURITY_ROOTPLUG is not set
        CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=65536
@@@@@@@@@ -2134,7 -2135,7 -2135,7 -2135,7 -2135,7 -2363,6 -2135,7 -2135,7 +2362,6 @@@@@@@@@ CONFIG_SECURITY_SELINUX_DISABLE=
        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_SECURITY_SMACK is not set
        CONFIG_CRYPTO=y
        #
        # Crypto core or helper
        #
+++++ ++# CONFIG_CRYPTO_FIPS is not set
        CONFIG_CRYPTO_ALGAPI=y
+++++ ++CONFIG_CRYPTO_ALGAPI2=y
        CONFIG_CRYPTO_AEAD=y
+++++ ++CONFIG_CRYPTO_AEAD2=y
        CONFIG_CRYPTO_BLKCIPHER=y
+++++ ++CONFIG_CRYPTO_BLKCIPHER2=y
        CONFIG_CRYPTO_HASH=y
+++++ ++CONFIG_CRYPTO_HASH2=y
+++++ ++CONFIG_CRYPTO_RNG2=y
        CONFIG_CRYPTO_MANAGER=y
+++++ ++CONFIG_CRYPTO_MANAGER2=y
        # CONFIG_CRYPTO_GF128MUL is not set
        # CONFIG_CRYPTO_NULL is not set
        # CONFIG_CRYPTO_CRYPTD is not set
@@@@@@@@@ -2181,6 -2182,6 -2182,6 -2182,6 -2182,6 -2416,7 -2182,6 -2182,6 +2415,7 @@@@@@@@@ CONFIG_CRYPTO_HMAC=
        # Digest
        #
        # CONFIG_CRYPTO_CRC32C is not set
+++++ ++# CONFIG_CRYPTO_CRC32C_INTEL is not set
        # CONFIG_CRYPTO_MD4 is not set
        CONFIG_CRYPTO_MD5=y
        # CONFIG_CRYPTO_MICHAEL_MIC is not set
@@@@@@@@@ -2221,6 -2222,6 -2222,6 -2222,6 -2222,6 -2457,11 -2222,6 -2222,6 +2456,11 @@@@@@@@@ CONFIG_CRYPTO_DES=
        #
        # CONFIG_CRYPTO_DEFLATE is not set
        # CONFIG_CRYPTO_LZO is not set
+++++ ++
+++++ ++#
+++++ ++# Random Number Generation
+++++ ++#
+++++ ++# CONFIG_CRYPTO_ANSI_CPRNG is not set
        CONFIG_CRYPTO_HW=y
        # CONFIG_CRYPTO_DEV_PADLOCK is not set
        # CONFIG_CRYPTO_DEV_GEODE is not set
@@@@@@@@@ -2238,6 -2239,6 -2239,6 -2239,6 -2239,6 -2479,7 -2239,6 -2239,6 +2478,7 @@@@@@@@@ CONFIG_VIRTUALIZATION=
        CONFIG_BITREVERSE=y
        CONFIG_GENERIC_FIND_FIRST_BIT=y
        CONFIG_GENERIC_FIND_NEXT_BIT=y
+++++ ++CONFIG_GENERIC_FIND_LAST_BIT=y
        # CONFIG_CRC_CCITT is not set
        # CONFIG_CRC16 is not set
        CONFIG_CRC_T10DIF=y
        #
        # Automatically generated make config: don't edit
----- --# Linux kernel version: 2.6.27-rc5
----- --# Wed Sep  3 17:13:39 2008
+++++ ++# Linux kernel version: 2.6.29-rc4
+++++ ++# Thu Feb 12 12:57:29 2009
        #
        CONFIG_64BIT=y
        # CONFIG_X86_32 is not set
        CONFIG_X86_64=y
        CONFIG_X86=y
        CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
----- --# CONFIG_GENERIC_LOCKBREAK is not set
        CONFIG_GENERIC_TIME=y
        CONFIG_GENERIC_CMOS_UPDATE=y
        CONFIG_CLOCKSOURCE_WATCHDOG=y
@@@@@@@@@ -23,17 -23,17 -23,17 -23,17 -23,17 -22,16 -23,17 -23,17 +22,16 @@@@@@@@@ CONFIG_ZONE_DMA=
        CONFIG_GENERIC_ISA_DMA=y
        CONFIG_GENERIC_IOMAP=y
        CONFIG_GENERIC_BUG=y
+++++ ++CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
        CONFIG_GENERIC_HWEIGHT=y
----- --# CONFIG_GENERIC_GPIO is not set
        CONFIG_ARCH_MAY_HAVE_PC_FDC=y
        CONFIG_RWSEM_GENERIC_SPINLOCK=y
        # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
----- --# CONFIG_ARCH_HAS_ILOG2_U32 is not set
----- --# CONFIG_ARCH_HAS_ILOG2_U64 is not set
        CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
        CONFIG_GENERIC_CALIBRATE_DELAY=y
        CONFIG_GENERIC_TIME_VSYSCALL=y
        CONFIG_ARCH_HAS_CPU_RELAX=y
+++++ ++CONFIG_ARCH_HAS_DEFAULT_IDLE=y
        CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
        CONFIG_HAVE_SETUP_PER_CPU_AREA=y
        CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
@@@@@@@@@ -42,12 -42,12 -42,12 -42,12 -42,12 -40,12 -42,12 -42,12 +40,12 @@@@@@@@@ CONFIG_ARCH_SUSPEND_POSSIBLE=
        CONFIG_ZONE_DMA32=y
        CONFIG_ARCH_POPULATES_NODE_MAP=y
        CONFIG_AUDIT_ARCH=y
----- --CONFIG_ARCH_SUPPORTS_AOUT=y
        CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
        CONFIG_GENERIC_HARDIRQS=y
        CONFIG_GENERIC_IRQ_PROBE=y
        CONFIG_GENERIC_PENDING_IRQ=y
        CONFIG_X86_SMP=y
+++++ ++CONFIG_USE_GENERIC_SMP_HELPERS=y
        CONFIG_X86_64_SMP=y
        CONFIG_X86_HT=y
        CONFIG_X86_BIOS_REBOOT=y
@@@@@@@@@ -76,30 -76,30 -76,30 -76,30 -76,30 -74,44 -76,30 -76,30 +74,44 @@@@@@@@@ CONFIG_TASK_IO_ACCOUNTING=
        CONFIG_AUDIT=y
        CONFIG_AUDITSYSCALL=y
        CONFIG_AUDIT_TREE=y
+++++ ++
+++++ ++#
+++++ ++# RCU Subsystem
+++++ ++#
+++++ ++# CONFIG_CLASSIC_RCU is not set
+++++ ++CONFIG_TREE_RCU=y
+++++ ++# CONFIG_PREEMPT_RCU is not set
+++++ ++# CONFIG_RCU_TRACE is not set
+++++ ++CONFIG_RCU_FANOUT=64
+++++ ++# CONFIG_RCU_FANOUT_EXACT is not set
+++++ ++# CONFIG_TREE_RCU_TRACE is not set
+++++ ++# CONFIG_PREEMPT_RCU_TRACE is not set
        # CONFIG_IKCONFIG is not set
   -    CONFIG_LOG_BUF_SHIFT=17
   -    CONFIG_CGROUPS=y
   -    # CONFIG_CGROUP_DEBUG is not set
   -    CONFIG_CGROUP_NS=y
   -    # CONFIG_CGROUP_DEVICE is not set
   -    CONFIG_CPUSETS=y
   +    CONFIG_LOG_BUF_SHIFT=18
--- - --CONFIG_CGROUPS=y
--- - --# CONFIG_CGROUP_DEBUG is not set
--- - --CONFIG_CGROUP_NS=y
--- - --# CONFIG_CGROUP_DEVICE is not set
--- - --CONFIG_CPUSETS=y
        CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
        CONFIG_GROUP_SCHED=y
        CONFIG_FAIR_GROUP_SCHED=y
        # CONFIG_RT_GROUP_SCHED is not set
        # CONFIG_USER_SCHED is not set
        CONFIG_CGROUP_SCHED=y
+++++ ++CONFIG_CGROUPS=y
+++++ ++# CONFIG_CGROUP_DEBUG is not set
+++++ ++CONFIG_CGROUP_NS=y
+++++ ++CONFIG_CGROUP_FREEZER=y
+++++ ++# CONFIG_CGROUP_DEVICE is not set
+++++ ++CONFIG_CPUSETS=y
+++++ ++CONFIG_PROC_PID_CPUSET=y
        CONFIG_CGROUP_CPUACCT=y
        CONFIG_RESOURCE_COUNTERS=y
        # CONFIG_CGROUP_MEM_RES_CTLR is not set
        # CONFIG_SYSFS_DEPRECATED_V2 is not set
----- --CONFIG_PROC_PID_CPUSET=y
        CONFIG_RELAY=y
        CONFIG_NAMESPACES=y
        CONFIG_UTS_NS=y
        CONFIG_IPC_NS=y
        CONFIG_USER_NS=y
        CONFIG_PID_NS=y
+++++ ++CONFIG_NET_NS=y
        CONFIG_BLK_DEV_INITRD=y
        CONFIG_INITRAMFS_SOURCE=""
        CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@@@@@@@@ -124,12 -124,12 -124,12 -124,12 -124,12 -136,15 -124,12 -124,12 +136,15 @@@@@@@@@ CONFIG_SIGNALFD=
        CONFIG_TIMERFD=y
        CONFIG_EVENTFD=y
        CONFIG_SHMEM=y
+++++ ++CONFIG_AIO=y
        CONFIG_VM_EVENT_COUNTERS=y
+++++ ++CONFIG_PCI_QUIRKS=y
        CONFIG_SLUB_DEBUG=y
        # CONFIG_SLAB is not set
        CONFIG_SLUB=y
        # CONFIG_SLOB is not set
        CONFIG_PROFILING=y
+++++ ++CONFIG_TRACEPOINTS=y
        CONFIG_MARKERS=y
        # CONFIG_OPROFILE is not set
        CONFIG_HAVE_OPROFILE=y
@@@@@@@@@ -139,15 -139,15 -139,15 -139,15 -139,15 -154,10 -139,15 -139,15 +154,10 @@@@@@@@@ CONFIG_KRETPROBES=
        CONFIG_HAVE_IOREMAP_PROT=y
        CONFIG_HAVE_KPROBES=y
        CONFIG_HAVE_KRETPROBES=y
----- --# CONFIG_HAVE_ARCH_TRACEHOOK is not set
----- --# CONFIG_HAVE_DMA_ATTRS is not set
----- --CONFIG_USE_GENERIC_SMP_HELPERS=y
----- --# CONFIG_HAVE_CLK is not set
----- --CONFIG_PROC_PAGE_MONITOR=y
+++++ ++CONFIG_HAVE_ARCH_TRACEHOOK=y
        # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
        CONFIG_SLABINFO=y
        CONFIG_RT_MUTEXES=y
----- --# CONFIG_TINY_SHMEM is not set
        CONFIG_BASE_SMALL=0
        CONFIG_MODULES=y
        # CONFIG_MODULE_FORCE_LOAD is not set
@@@@@@@@@ -155,7 -155,7 -155,7 -155,7 -155,7 -165,6 -155,7 -155,7 +165,6 @@@@@@@@@ CONFIG_MODULE_UNLOAD=
        CONFIG_MODULE_FORCE_UNLOAD=y
        # CONFIG_MODVERSIONS is not set
        # CONFIG_MODULE_SRCVERSION_ALL is not set
----- --CONFIG_KMOD=y
        CONFIG_STOP_MACHINE=y
        CONFIG_BLOCK=y
        CONFIG_BLK_DEV_IO_TRACE=y
@@@@@@@@@ -175,7 -175,7 -175,7 -175,7 -175,7 -184,7 -175,7 -175,7 +184,7 @@@@@@@@@ CONFIG_IOSCHED_CFQ=
        CONFIG_DEFAULT_CFQ=y
        # CONFIG_DEFAULT_NOOP is not set
        CONFIG_DEFAULT_IOSCHED="cfq"
----- --CONFIG_CLASSIC_RCU=y
+++++ ++CONFIG_FREEZER=y
        
        #
        # Processor type and features
@@@@@@@@@ -185,12 -185,13 -185,13 -185,13 -185,13 -194,16 -185,13 -185,13 +194,15 @@@@@@@@@ CONFIG_NO_HZ=
        CONFIG_HIGH_RES_TIMERS=y
        CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
        CONFIG_SMP=y
+++++ ++CONFIG_SPARSE_IRQ=y
+++++ ++# CONFIG_NUMA_MIGRATE_IRQ_DESC is not set
        CONFIG_X86_FIND_SMP_CONFIG=y
        CONFIG_X86_MPPARSE=y
 -------CONFIG_X86_PC=y
        # CONFIG_X86_ELAN is not set
        # CONFIG_X86_VOYAGER is not set
        # CONFIG_X86_GENERICARCH is not set
        # CONFIG_X86_VSMP is not set
+++++ ++CONFIG_SCHED_OMIT_FRAME_POINTER=y
        # CONFIG_PARAVIRT_GUEST is not set
        # CONFIG_MEMTEST is not set
        # CONFIG_M386 is not set
@@@@@@@@@ -229,6 -230,6 -230,6 -230,6 -230,6 -242,11 -230,6 -230,6 +241,11 @@@@@@@@@ CONFIG_X86_CMPXCHG64=
        CONFIG_X86_CMOV=y
        CONFIG_X86_MINIMUM_CPU_FAMILY=64
        CONFIG_X86_DEBUGCTLMSR=y
+++++ ++CONFIG_CPU_SUP_INTEL=y
+++++ ++CONFIG_CPU_SUP_AMD=y
+++++ ++CONFIG_CPU_SUP_CENTAUR_64=y
+++++ ++CONFIG_X86_DS=y
+++++ ++CONFIG_X86_PTRACE_BTS=y
        CONFIG_HPET_TIMER=y
        CONFIG_HPET_EMULATE_RTC=y
        CONFIG_DMI=y
@@@@@@@@@ -236,8 -237,8 -237,8 -237,8 -237,8 -254,11 -237,8 -237,8 +253,11 @@@@@@@@@ CONFIG_GART_IOMMU=
        CONFIG_CALGARY_IOMMU=y
        CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
        CONFIG_AMD_IOMMU=y
+++++ ++CONFIG_AMD_IOMMU_STATS=y
        CONFIG_SWIOTLB=y
        CONFIG_IOMMU_HELPER=y
+++++ ++CONFIG_IOMMU_API=y
+++++ ++# CONFIG_MAXSMP is not set
        CONFIG_NR_CPUS=64
        CONFIG_SCHED_SMT=y
        CONFIG_SCHED_MC=y
@@@@@@@@@ -246,12 -247,12 -247,12 -247,12 -247,12 -267,17 -247,12 -247,12 +266,17 @@@@@@@@@ CONFIG_PREEMPT_VOLUNTARY=
        # CONFIG_PREEMPT is not set
        CONFIG_X86_LOCAL_APIC=y
        CONFIG_X86_IO_APIC=y
+++++ ++CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
        # CONFIG_X86_MCE is not set
        # CONFIG_I8K is not set
        CONFIG_MICROCODE=y
+++++ ++CONFIG_MICROCODE_INTEL=y
+++++ ++CONFIG_MICROCODE_AMD=y
        CONFIG_MICROCODE_OLD_INTERFACE=y
        CONFIG_X86_MSR=y
        CONFIG_X86_CPUID=y
+++++ ++CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
+++++ ++CONFIG_DIRECT_GBPAGES=y
        CONFIG_NUMA=y
        CONFIG_K8_NUMA=y
        CONFIG_X86_64_ACPI_NUMA=y
@@@@@@@@@ -268,7 -269,7 -269,7 -269,7 -269,7 -294,6 -269,7 -269,7 +293,6 @@@@@@@@@ CONFIG_SPARSEMEM_MANUAL=
        CONFIG_SPARSEMEM=y
        CONFIG_NEED_MULTIPLE_NODES=y
        CONFIG_HAVE_MEMORY_PRESENT=y
----- --# CONFIG_SPARSEMEM_STATIC is not set
        CONFIG_SPARSEMEM_EXTREME=y
        CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
        CONFIG_SPARSEMEM_VMEMMAP=y
        CONFIG_PAGEFLAGS_EXTENDED=y
        CONFIG_SPLIT_PTLOCK_CPUS=4
        CONFIG_MIGRATION=y
----- --CONFIG_RESOURCES_64BIT=y
+++++ ++CONFIG_PHYS_ADDR_T_64BIT=y
        CONFIG_ZONE_DMA_FLAG=1
        CONFIG_BOUNCE=y
        CONFIG_VIRT_TO_BUS=y
+++++ ++CONFIG_UNEVICTABLE_LRU=y
+++++ ++CONFIG_X86_CHECK_BIOS_CORRUPTION=y
+++++ ++CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
+++++ ++CONFIG_X86_RESERVE_LOW_64K=y
        CONFIG_MTRR=y
        # CONFIG_MTRR_SANITIZER is not set
        CONFIG_X86_PAT=y
@@@@@@@@@ -297,15 -298,15 -298,15 -298,15 -298,15 -326,16 -298,15 -298,15 +325,16 @@@@@@@@@ CONFIG_SCHED_HRTICK=
        CONFIG_KEXEC=y
        CONFIG_CRASH_DUMP=y
        CONFIG_PHYSICAL_START=0x1000000
   -    CONFIG_RELOCATABLE=y
   +    # CONFIG_RELOCATABLE is not set
        CONFIG_PHYSICAL_ALIGN=0x200000
        CONFIG_HOTPLUG_CPU=y
        # CONFIG_COMPAT_VDSO is not set
+++++ ++# CONFIG_CMDLINE_BOOL is not set
        CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
        CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
        
        #
----- --# Power management options
+++++ ++# Power management and ACPI options
        #
        CONFIG_ARCH_HIBERNATION_HEADER=y
        CONFIG_PM=y
@@@@@@@@@ -332,20 -333,20 -333,20 -333,20 -333,20 -362,14 -333,20 -333,20 +361,14 @@@@@@@@@ CONFIG_ACPI_BATTERY=
        CONFIG_ACPI_BUTTON=y
        CONFIG_ACPI_FAN=y
        CONFIG_ACPI_DOCK=y
----- --# CONFIG_ACPI_BAY is not set
        CONFIG_ACPI_PROCESSOR=y
        CONFIG_ACPI_HOTPLUG_CPU=y
        CONFIG_ACPI_THERMAL=y
        CONFIG_ACPI_NUMA=y
----- --# CONFIG_ACPI_WMI is not set
----- --# CONFIG_ACPI_ASUS is not set
----- --# CONFIG_ACPI_TOSHIBA is not set
        # CONFIG_ACPI_CUSTOM_DSDT is not set
        CONFIG_ACPI_BLACKLIST_YEAR=0
        # CONFIG_ACPI_DEBUG is not set
----- --CONFIG_ACPI_EC=y
        # CONFIG_ACPI_PCI_SLOT is not set
----- --CONFIG_ACPI_POWER=y
        CONFIG_ACPI_SYSTEM=y
        CONFIG_X86_PM_TIMER=y
        CONFIG_ACPI_CONTAINER=y
@@@@@@@@@ -380,12 -381,12 -381,12 -381,12 -381,12 -404,16 -381,12 -381,12 +403,16 @@@@@@@@@ CONFIG_X86_ACPI_CPUFREQ=
        #
        # shared options
        #
----- --# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
        # CONFIG_X86_SPEEDSTEP_LIB is not set
        CONFIG_CPU_IDLE=y
        CONFIG_CPU_IDLE_GOV_LADDER=y
        CONFIG_CPU_IDLE_GOV_MENU=y
        
+++++ ++#
+++++ ++# Memory power savings
+++++ ++#
+++++ ++# CONFIG_I7300_IDLE is not set
+++++ ++
        #
        # Bus options (PCI etc.)
        #
@@@@@@@@@ -394,8 -395,8 -395,8 -395,8 -395,8 -422,10 -395,8 -395,8 +421,10 @@@@@@@@@ CONFIG_PCI_DIRECT=
        CONFIG_PCI_MMCONFIG=y
        CONFIG_PCI_DOMAINS=y
        CONFIG_DMAR=y
+++++ ++# CONFIG_DMAR_DEFAULT_ON is not set
        CONFIG_DMAR_GFX_WA=y
        CONFIG_DMAR_FLOPPY_WA=y
+++++ ++# CONFIG_INTR_REMAP is not set
        CONFIG_PCIEPORTBUS=y
        # CONFIG_HOTPLUG_PCI_PCIE is not set
        CONFIG_PCIEAER=y
@@@@@@@@@ -404,6 -405,6 -405,6 -405,6 -405,6 -434,7 -405,6 -405,6 +433,7 @@@@@@@@@ CONFIG_ARCH_SUPPORTS_MSI=
        CONFIG_PCI_MSI=y
        # CONFIG_PCI_LEGACY is not set
        # CONFIG_PCI_DEBUG is not set
+++++ ++# CONFIG_PCI_STUB is not set
        CONFIG_HT_IRQ=y
        CONFIG_ISA_DMA_API=y
        CONFIG_K8_NB=y
@@@@@@@@@ -437,6 -438,6 -438,6 -438,6 -438,6 -468,8 -438,6 -438,6 +467,8 @@@@@@@@@ CONFIG_HOTPLUG_PCI=
        #
        CONFIG_BINFMT_ELF=y
        CONFIG_COMPAT_BINFMT_ELF=y
+++++ ++CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+++++ ++# CONFIG_HAVE_AOUT is not set
        CONFIG_BINFMT_MISC=y
        CONFIG_IA32_EMULATION=y
        # CONFIG_IA32_AOUT is not set
@@@@@@@@@ -448,6 -449,6 -449,6 -449,6 -449,6 -481,7 -449,6 -449,6 +480,7 @@@@@@@@@ CONFIG_NET=
        #
        # Networking options
        #
+++++ ++CONFIG_COMPAT_NET_DEV_OPS=y
        CONFIG_PACKET=y
        CONFIG_PACKET_MMAP=y
        CONFIG_UNIX=y
@@@@@@@@@ -508,7 -509,7 -509,7 -509,7 -509,7 -542,6 -509,7 -509,7 +541,6 @@@@@@@@@ CONFIG_DEFAULT_CUBIC=
        # CONFIG_DEFAULT_RENO is not set
        CONFIG_DEFAULT_TCP_CONG="cubic"
        CONFIG_TCP_MD5SIG=y
----- --# CONFIG_IP_VS is not set
        CONFIG_IPV6=y
        # CONFIG_IPV6_PRIVACY is not set
        # CONFIG_IPV6_ROUTER_PREF is not set
@@@@@@@@@ -546,19 -547,19 -547,19 -547,19 -547,19 -579,21 -547,19 -547,19 +578,21 @@@@@@@@@ CONFIG_NF_CONNTRACK_IRC=
        CONFIG_NF_CONNTRACK_SIP=y
        CONFIG_NF_CT_NETLINK=y
        CONFIG_NETFILTER_XTABLES=y
+++++ ++CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
        CONFIG_NETFILTER_XT_TARGET_MARK=y
        CONFIG_NETFILTER_XT_TARGET_NFLOG=y
        CONFIG_NETFILTER_XT_TARGET_SECMARK=y
----- --CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
        CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
        CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
        CONFIG_NETFILTER_XT_MATCH_MARK=y
        CONFIG_NETFILTER_XT_MATCH_POLICY=y
        CONFIG_NETFILTER_XT_MATCH_STATE=y
+++++ ++# CONFIG_IP_VS is not set
        
        #
        # IP: Netfilter Configuration
        #
+++++ ++CONFIG_NF_DEFRAG_IPV4=y
        CONFIG_NF_CONNTRACK_IPV4=y
        CONFIG_NF_CONNTRACK_PROC_COMPAT=y
        CONFIG_IP_NF_IPTABLES=y
@@@@@@@@@ -584,8 -585,8 -585,8 -585,8 -585,8 -619,8 -585,8 -585,8 +618,8 @@@@@@@@@ CONFIG_IP_NF_MANGLE=
        CONFIG_NF_CONNTRACK_IPV6=y
        CONFIG_IP6_NF_IPTABLES=y
        CONFIG_IP6_NF_MATCH_IPV6HEADER=y
----- --CONFIG_IP6_NF_FILTER=y
        CONFIG_IP6_NF_TARGET_LOG=y
+++++ ++CONFIG_IP6_NF_FILTER=y
        CONFIG_IP6_NF_TARGET_REJECT=y
        CONFIG_IP6_NF_MANGLE=y
        # CONFIG_IP_DCCP is not set
        # CONFIG_TIPC is not set
        # CONFIG_ATM is not set
        # CONFIG_BRIDGE is not set
+++++ ++# CONFIG_NET_DSA is not set
        # CONFIG_VLAN_8021Q is not set
        # CONFIG_DECNET is not set
        CONFIG_LLC=y
@@@@@@@@@ -612,6 -613,6 -613,6 -613,6 -613,6 -648,7 -613,6 -613,6 +647,7 @@@@@@@@@ CONFIG_NET_SCHED=
        # CONFIG_NET_SCH_HTB is not set
        # CONFIG_NET_SCH_HFSC is not set
        # CONFIG_NET_SCH_PRIO is not set
+++++ ++# CONFIG_NET_SCH_MULTIQ is not set
        # CONFIG_NET_SCH_RED is not set
        # CONFIG_NET_SCH_SFQ is not set
        # CONFIG_NET_SCH_TEQL is not set
        # CONFIG_NET_SCH_GRED is not set
        # CONFIG_NET_SCH_DSMARK is not set
        # CONFIG_NET_SCH_NETEM is not set
+++++ ++# CONFIG_NET_SCH_DRR is not set
        # CONFIG_NET_SCH_INGRESS is not set
        
        #
@@@@@@@@@ -633,6 -634,6 -634,6 -634,6 -634,6 -671,7 -634,6 -634,6 +670,7 @@@@@@@@@ CONFIG_NET_CLS=
        # CONFIG_NET_CLS_RSVP is not set
        # CONFIG_NET_CLS_RSVP6 is not set
        # CONFIG_NET_CLS_FLOW is not set
+++++ ++# CONFIG_NET_CLS_CGROUP is not set
        CONFIG_NET_EMATCH=y
        CONFIG_NET_EMATCH_STACK=32
        # CONFIG_NET_EMATCH_CMP is not set
@@@@@@@@@ -648,7 -649,7 -649,7 -649,7 -649,7 -687,9 -649,7 -649,7 +686,9 @@@@@@@@@ CONFIG_NET_CLS_ACT=
        # CONFIG_NET_ACT_NAT is not set
        # CONFIG_NET_ACT_PEDIT is not set
        # CONFIG_NET_ACT_SIMP is not set
+++++ ++# CONFIG_NET_ACT_SKBEDIT is not set
        CONFIG_NET_SCH_FIFO=y
+++++ ++# CONFIG_DCB is not set
        
        #
        # Network testing
@@@@@@@@@ -665,29 -666,29 -666,29 -666,29 -666,29 -706,33 -666,29 -666,29 +705,33 @@@@@@@@@ CONFIG_HAMRADIO=
        # CONFIG_IRDA is not set
        # CONFIG_BT is not set
        # CONFIG_AF_RXRPC is not set
+++++ ++# CONFIG_PHONET is not set
        CONFIG_FIB_RULES=y
----- --
----- --#
----- --# Wireless
----- --#
+++++ ++CONFIG_WIRELESS=y
        CONFIG_CFG80211=y
+++++ ++# CONFIG_CFG80211_REG_DEBUG is not set
        CONFIG_NL80211=y
+++++ ++CONFIG_WIRELESS_OLD_REGULATORY=y
        CONFIG_WIRELESS_EXT=y
        CONFIG_WIRELESS_EXT_SYSFS=y
+++++ ++# CONFIG_LIB80211 is not set
        CONFIG_MAC80211=y
        
        #
        # Rate control algorithm selection
        #
----- --CONFIG_MAC80211_RC_PID=y
----- --CONFIG_MAC80211_RC_DEFAULT_PID=y
----- --CONFIG_MAC80211_RC_DEFAULT="pid"
+++++ ++CONFIG_MAC80211_RC_MINSTREL=y
+++++ ++# CONFIG_MAC80211_RC_DEFAULT_PID is not set
+++++ ++CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+++++ ++CONFIG_MAC80211_RC_DEFAULT="minstrel"
        # CONFIG_MAC80211_MESH is not set
        CONFIG_MAC80211_LEDS=y
        # CONFIG_MAC80211_DEBUGFS is not set
        # CONFIG_MAC80211_DEBUG_MENU is not set
----- --# CONFIG_IEEE80211 is not set
----- --# CONFIG_RFKILL is not set
+++++ ++# CONFIG_WIMAX is not set
+++++ ++CONFIG_RFKILL=y
+++++ ++# CONFIG_RFKILL_INPUT is not set
+++++ ++CONFIG_RFKILL_LEDS=y
        # CONFIG_NET_9P is not set
        
        #
@@@@@@@@@ -711,7 -712,7 -712,7 -712,7 -712,7 -756,7 -712,7 -712,7 +755,7 @@@@@@@@@ CONFIG_PROC_EVENTS=
        # CONFIG_MTD is not set
        # CONFIG_PARPORT is not set
        CONFIG_PNP=y
----- --# CONFIG_PNP_DEBUG is not set
+++++ ++CONFIG_PNP_DEBUG_MESSAGES=y
        
        #
        # Protocols
@@@@@@@@@ -739,21 -740,21 -740,21 -740,21 -740,21 -784,21 -740,21 -740,21 +783,21 @@@@@@@@@ CONFIG_BLK_DEV_RAM_SIZE=1638
        CONFIG_MISC_DEVICES=y
        # CONFIG_IBM_ASM is not set
        # CONFIG_PHANTOM is not set
----- --# CONFIG_EEPROM_93CX6 is not set
        # CONFIG_SGI_IOC4 is not set
        # CONFIG_TIFM_CORE is not set
----- --# CONFIG_ACER_WMI is not set
----- --# CONFIG_ASUS_LAPTOP is not set
----- --# CONFIG_FUJITSU_LAPTOP is not set
----- --# CONFIG_MSI_LAPTOP is not set
----- --# CONFIG_COMPAL_LAPTOP is not set
----- --# CONFIG_SONY_LAPTOP is not set
----- --# CONFIG_THINKPAD_ACPI is not set
----- --# CONFIG_INTEL_MENLOW is not set
+++++ ++# CONFIG_ICS932S401 is not set
        # CONFIG_ENCLOSURE_SERVICES is not set
        # CONFIG_SGI_XP is not set
        # CONFIG_HP_ILO is not set
        # CONFIG_SGI_GRU is not set
+++++ ++# CONFIG_C2PORT is not set
+++++ ++
+++++ ++#
+++++ ++# EEPROM support
+++++ ++#
+++++ ++# CONFIG_EEPROM_AT24 is not set
+++++ ++# CONFIG_EEPROM_LEGACY is not set
+++++ ++# CONFIG_EEPROM_93CX6 is not set
        CONFIG_HAVE_IDE=y
        # CONFIG_IDE is not set
        
@@@@@@@@@ -792,7 -793,7 -793,7 -793,7 -793,7 -837,7 -793,7 -793,7 +836,7 @@@@@@@@@ CONFIG_SCSI_WAIT_SCAN=
        #
        CONFIG_SCSI_SPI_ATTRS=y
        # CONFIG_SCSI_FC_ATTRS is not set
----- --CONFIG_SCSI_ISCSI_ATTRS=y
+++++ ++# CONFIG_SCSI_ISCSI_ATTRS is not set
        # CONFIG_SCSI_SAS_ATTRS is not set
        # CONFIG_SCSI_SAS_LIBSAS is not set
        # CONFIG_SCSI_SRP_ATTRS is not set
@@@@@@@@@ -863,6 -864,6 -864,6 -864,6 -864,6 -908,7 -864,6 -864,6 +907,7 @@@@@@@@@ CONFIG_PATA_OLDPIIX=
        CONFIG_PATA_SCH=y
        CONFIG_MD=y
        CONFIG_BLK_DEV_MD=y
+++++ ++CONFIG_MD_AUTODETECT=y
        # CONFIG_MD_LINEAR is not set
        # CONFIG_MD_RAID0 is not set
        # CONFIG_MD_RAID1 is not set
@@@@@@@@@ -918,6 -919,6 -919,6 -919,6 -919,6 -964,9 -919,6 -919,6 +963,9 @@@@@@@@@ CONFIG_PHYLIB=
        # CONFIG_BROADCOM_PHY is not set
        # CONFIG_ICPLUS_PHY is not set
        # CONFIG_REALTEK_PHY is not set
+++++ ++# CONFIG_NATIONAL_PHY is not set
+++++ ++# CONFIG_STE10XP is not set
+++++ ++# CONFIG_LSI_ET1011C_PHY is not set
        # CONFIG_FIXED_PHY is not set
        # CONFIG_MDIO_BITBANG is not set
        CONFIG_NET_ETHERNET=y
@@@@@@@@@ -941,6 -942,6 -942,6 -942,6 -942,6 -990,9 -942,6 -942,6 +989,9 @@@@@@@@@ CONFIG_NET_TULIP=
        # 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_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+++++ ++# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+++++ ++# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
        CONFIG_NET_PCI=y
        # CONFIG_PCNET32 is not set
        # CONFIG_AMD8111_ETH is not set
        # CONFIG_B44 is not set
        CONFIG_FORCEDETH=y
        # CONFIG_FORCEDETH_NAPI is not set
----- --# CONFIG_EEPRO100 is not set
        CONFIG_E100=y
        # CONFIG_FEALNX is not set
        # CONFIG_NATSEMI is not set
@@@@@@@@@ -962,15 -963,15 -963,15 -963,15 -963,15 -1013,16 -963,15 -963,15 +1012,16 @@@@@@@@@ CONFIG_8139TOO_PIO=
        # CONFIG_R6040 is not set
        # CONFIG_SIS900 is not set
        # CONFIG_EPIC100 is not set
+++++ ++# CONFIG_SMSC9420 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_ATL2 is not set
        CONFIG_NETDEV_1000=y
        # CONFIG_ACENIC is not set
        # CONFIG_DL2K is not set
        CONFIG_E1000=y
----- --# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
        # CONFIG_E1000E is not set
        # CONFIG_IP1000 is not set
        # CONFIG_IGB is not set
@@@@@@@@@ -988,18 -989,18 -989,18 -989,18 -989,18 -1040,23 -989,18 -989,18 +1039,23 @@@@@@@@@ CONFIG_TIGON3=
        # CONFIG_QLA3XXX is not set
        # CONFIG_ATL1 is not set
        # CONFIG_ATL1E is not set
+++++ ++# CONFIG_JME is not set
        CONFIG_NETDEV_10000=y
        # CONFIG_CHELSIO_T1 is not set
+++++ ++CONFIG_CHELSIO_T3_DEPENDS=y
        # CONFIG_CHELSIO_T3 is not set
+++++ ++# CONFIG_ENIC is not set
        # CONFIG_IXGBE is not set
        # CONFIG_IXGB is not set
        # CONFIG_S2IO is not set
        # CONFIG_MYRI10GE is not set
        # CONFIG_NETXEN_NIC is not set
        # CONFIG_NIU is not set
+++++ ++# CONFIG_MLX4_EN is not set
        # CONFIG_MLX4_CORE is not set
        # CONFIG_TEHUTI is not set
        # CONFIG_BNX2X is not set
+++++ ++# CONFIG_QLGE is not set
        # CONFIG_SFC is not set
        CONFIG_TR=y
        # CONFIG_IBMOL is not set
        # CONFIG_WLAN_PRE80211 is not set
        CONFIG_WLAN_80211=y
        # CONFIG_PCMCIA_RAYCS is not set
----- --# CONFIG_IPW2100 is not set
----- --# CONFIG_IPW2200 is not set
        # CONFIG_LIBERTAS is not set
+++++ ++# CONFIG_LIBERTAS_THINFIRM is not set
        # CONFIG_AIRO is not set
        # CONFIG_HERMES is not set
        # CONFIG_ATMEL is not set
        CONFIG_ATH5K=y
        # CONFIG_ATH5K_DEBUG is not set
        # CONFIG_ATH9K is not set
+++++ ++# CONFIG_IPW2100 is not set
+++++ ++# CONFIG_IPW2200 is not set
        # CONFIG_IWLCORE is not set
        # CONFIG_IWLWIFI_LEDS is not set
        # CONFIG_IWLAGN is not set
        # CONFIG_ZD1211RW is not set
        # CONFIG_RT2X00 is not set
        
+++++ ++#
+++++ ++# Enable WiMAX (Networking options) to see the WiMAX drivers
+++++ ++#
+++++ ++
        #
        # USB Network Adapters
        #
        # CONFIG_USB_PEGASUS is not set
        # CONFIG_USB_RTL8150 is not set
        # CONFIG_USB_USBNET is not set
+++++ ++# CONFIG_USB_HSO is not set
        CONFIG_NET_PCMCIA=y
        # CONFIG_PCMCIA_3C589 is not set
        # CONFIG_PCMCIA_3C574 is not set
        # CONFIG_PCMCIA_SMC91C92 is not set
        # CONFIG_PCMCIA_XIRC2PS is not set
        # CONFIG_PCMCIA_AXNET is not set
+++++ ++# CONFIG_PCMCIA_IBMTR is not set
        # CONFIG_WAN is not set
        CONFIG_FDDI=y
        # CONFIG_DEFXX is not set
@@@@@@@@@ -1109,6 -1110,6 -1110,6 -1110,6 -1110,6 -1173,7 -1110,6 -1110,6 +1172,7 @@@@@@@@@ CONFIG_MOUSE_PS2_LOGIPS2PP=
        CONFIG_MOUSE_PS2_SYNAPTICS=y
        CONFIG_MOUSE_PS2_LIFEBOOK=y
        CONFIG_MOUSE_PS2_TRACKPOINT=y
+++++ ++# CONFIG_MOUSE_PS2_ELANTECH is not set
        # CONFIG_MOUSE_PS2_TOUCHKIT is not set
        # CONFIG_MOUSE_SERIAL is not set
        # CONFIG_MOUSE_APPLETOUCH is not set
@@@@@@@@@ -1146,15 -1147,15 -1147,15 -1147,15 -1147,15 -1211,16 -1147,15 -1147,15 +1210,16 @@@@@@@@@ CONFIG_INPUT_TOUCHSCREEN=
        # CONFIG_TOUCHSCREEN_FUJITSU is not set
        # CONFIG_TOUCHSCREEN_GUNZE is not set
        # CONFIG_TOUCHSCREEN_ELO is not set
+++++ ++# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
        # CONFIG_TOUCHSCREEN_MTOUCH is not set
        # CONFIG_TOUCHSCREEN_INEXIO is not set
        # CONFIG_TOUCHSCREEN_MK712 is not set
        # CONFIG_TOUCHSCREEN_PENMOUNT is not set
        # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
        # CONFIG_TOUCHSCREEN_TOUCHWIN is not set
----- --# CONFIG_TOUCHSCREEN_UCB1400 is not set
        # CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
        # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+++++ ++# CONFIG_TOUCHSCREEN_TSC2007 is not set
        CONFIG_INPUT_MISC=y
        # CONFIG_INPUT_PCSPKR is not set
        # CONFIG_INPUT_APANEL is not set
        # CONFIG_INPUT_KEYSPAN_REMOTE is not set
        # CONFIG_INPUT_POWERMATE is not set
        # CONFIG_INPUT_YEALINK is not set
+++++ ++# CONFIG_INPUT_CM109 is not set
        # CONFIG_INPUT_UINPUT is not set
        
        #
@@@@@@@@@ -1230,6 -1231,6 -1231,6 -1231,6 -1231,6 -1297,7 -1231,6 -1231,6 +1296,7 @@@@@@@@@ CONFIG_SERIAL_CORE=
        CONFIG_SERIAL_CORE_CONSOLE=y
        # CONFIG_SERIAL_JSM is not set
        CONFIG_UNIX98_PTYS=y
+++++ ++# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
        # CONFIG_LEGACY_PTYS is not set
        # CONFIG_IPMI_HANDLER is not set
        CONFIG_HW_RANDOM=y
        CONFIG_I2C_BOARDINFO=y
        # CONFIG_I2C_CHARDEV is not set
        CONFIG_I2C_HELPER_AUTO=y
+++++ ++CONFIG_I2C_ALGOBIT=y
        
        #
        # I2C Hardware Bus support
@@@@@@@@@ -1310,8 -1311,8 -1311,8 -1311,8 -1311,8 -1379,6 -1311,8 -1311,8 +1378,6 @@@@@@@@@ CONFIG_I2C_I801=
        # Miscellaneous I2C Chip support
        #
        # CONFIG_DS1682 is not set
--    --# CONFIG_EEPROM_AT24 is not set
--    --# CONFIG_EEPROM_LEGACY is not set
  ---   # CONFIG_AT24 is not set
  ---   # CONFIG_SENSORS_EEPROM is not set
        # CONFIG_SENSORS_PCF8574 is not set
        # CONFIG_PCF8575 is not set
        # CONFIG_SENSORS_PCA9539 is not set
@@@@@@@@@ -1330,8 -1331,8 -1331,8 -1331,8 -1331,8 -1397,78 -1331,8 -1331,8 +1396,78 @@@@@@@@@ CONFIG_POWER_SUPPLY=
        # CONFIG_POWER_SUPPLY_DEBUG is not set
        # CONFIG_PDA_POWER is not set
        # CONFIG_BATTERY_DS2760 is not set
----- --# CONFIG_HWMON is not set
+++++ ++# CONFIG_BATTERY_BQ27x00 is not set
+++++ ++CONFIG_HWMON=y
+++++ ++# CONFIG_HWMON_VID is not set
+++++ ++# CONFIG_SENSORS_ABITUGURU is not set
+++++ ++# CONFIG_SENSORS_ABITUGURU3 is not set
+++++ ++# CONFIG_SENSORS_AD7414 is not set
+++++ ++# CONFIG_SENSORS_AD7418 is not set
+++++ ++# CONFIG_SENSORS_ADM1021 is not set
+++++ ++# CONFIG_SENSORS_ADM1025 is not set
+++++ ++# CONFIG_SENSORS_ADM1026 is not set
+++++ ++# CONFIG_SENSORS_ADM1029 is not set
+++++ ++# CONFIG_SENSORS_ADM1031 is not set
+++++ ++# CONFIG_SENSORS_ADM9240 is not set
+++++ ++# CONFIG_SENSORS_ADT7462 is not set
+++++ ++# CONFIG_SENSORS_ADT7470 is not set
+++++ ++# CONFIG_SENSORS_ADT7473 is not set
+++++ ++# CONFIG_SENSORS_ADT7475 is not set
+++++ ++# CONFIG_SENSORS_K8TEMP is not set
+++++ ++# CONFIG_SENSORS_ASB100 is not set
+++++ ++# CONFIG_SENSORS_ATXP1 is not set
+++++ ++# CONFIG_SENSORS_DS1621 is not set
+++++ ++# CONFIG_SENSORS_I5K_AMB is not set
+++++ ++# CONFIG_SENSORS_F71805F is not set
+++++ ++# CONFIG_SENSORS_F71882FG is not set
+++++ ++# CONFIG_SENSORS_F75375S is not set
+++++ ++# CONFIG_SENSORS_FSCHER is not set
+++++ ++# CONFIG_SENSORS_FSCPOS is not set
+++++ ++# CONFIG_SENSORS_FSCHMD is not set
+++++ ++# CONFIG_SENSORS_GL518SM is not set
+++++ ++# CONFIG_SENSORS_GL520SM is not set
+++++ ++# CONFIG_SENSORS_CORETEMP is not set
+++++ ++# CONFIG_SENSORS_IT87 is not set
+++++ ++# CONFIG_SENSORS_LM63 is not set
+++++ ++# CONFIG_SENSORS_LM75 is not set
+++++ ++# CONFIG_SENSORS_LM77 is not set
+++++ ++# CONFIG_SENSORS_LM78 is not set
+++++ ++# CONFIG_SENSORS_LM80 is not set
+++++ ++# CONFIG_SENSORS_LM83 is not set
+++++ ++# CONFIG_SENSORS_LM85 is not set
+++++ ++# CONFIG_SENSORS_LM87 is not set
+++++ ++# CONFIG_SENSORS_LM90 is not set
+++++ ++# CONFIG_SENSORS_LM92 is not set
+++++ ++# CONFIG_SENSORS_LM93 is not set
+++++ ++# CONFIG_SENSORS_LTC4245 is not set
+++++ ++# CONFIG_SENSORS_MAX1619 is not set
+++++ ++# CONFIG_SENSORS_MAX6650 is not set
+++++ ++# CONFIG_SENSORS_PC87360 is not set
+++++ ++# CONFIG_SENSORS_PC87427 is not set
+++++ ++# CONFIG_SENSORS_SIS5595 is not set
+++++ ++# CONFIG_SENSORS_DME1737 is not set
+++++ ++# CONFIG_SENSORS_SMSC47M1 is not set
+++++ ++# CONFIG_SENSORS_SMSC47M192 is not set
+++++ ++# CONFIG_SENSORS_SMSC47B397 is not set
+++++ ++# CONFIG_SENSORS_ADS7828 is not set
+++++ ++# CONFIG_SENSORS_THMC50 is not set
+++++ ++# CONFIG_SENSORS_VIA686A is not set
+++++ ++# CONFIG_SENSORS_VT1211 is not set
+++++ ++# CONFIG_SENSORS_VT8231 is not set
+++++ ++# CONFIG_SENSORS_W83781D is not set
+++++ ++# CONFIG_SENSORS_W83791D is not set
+++++ ++# CONFIG_SENSORS_W83792D is not set
+++++ ++# CONFIG_SENSORS_W83793 is not set
+++++ ++# CONFIG_SENSORS_W83L785TS is not set
+++++ ++# CONFIG_SENSORS_W83L786NG is not set
+++++ ++# CONFIG_SENSORS_W83627HF is not set
+++++ ++# CONFIG_SENSORS_W83627EHF is not set
+++++ ++# CONFIG_SENSORS_HDAPS is not set
+++++ ++# CONFIG_SENSORS_LIS3LV02D is not set
+++++ ++# CONFIG_SENSORS_APPLESMC is not set
+++++ ++# CONFIG_HWMON_DEBUG_CHIP is not set
        CONFIG_THERMAL=y
+++++ ++# CONFIG_THERMAL_HWMON is not set
        CONFIG_WATCHDOG=y
        # CONFIG_WATCHDOG_NOWAYOUT is not set
        
        # CONFIG_I6300ESB_WDT is not set
        # CONFIG_ITCO_WDT is not set
        # CONFIG_IT8712F_WDT is not set
+++++ ++# CONFIG_IT87_WDT is not set
        # CONFIG_HP_WATCHDOG is not set
        # CONFIG_SC1200_WDT is not set
        # CONFIG_PC87413_WDT is not set
        # CONFIG_60XX_WDT is not set
        # CONFIG_SBC8360_WDT is not set
        # CONFIG_CPU5_WDT is not set
+++++ ++# CONFIG_SMSC_SCH311X_WDT is not set
        # CONFIG_SMSC37B787_WDT is not set
        # CONFIG_W83627HF_WDT is not set
        # CONFIG_W83697HF_WDT is not set
+++++ ++# CONFIG_W83697UG_WDT is not set
        # CONFIG_W83877F_WDT is not set
        # CONFIG_W83977F_WDT is not set
        # CONFIG_MACHZ_WDT is not set
        # USB-based Watchdog Cards
        #
        # CONFIG_USBPCWATCHDOG is not set
+++++ ++CONFIG_SSB_POSSIBLE=y
        
        #
        # Sonics Silicon Backplane
        #
----- --CONFIG_SSB_POSSIBLE=y
        # CONFIG_SSB is not set
        
        #
        # CONFIG_MFD_CORE is not set
        # CONFIG_MFD_SM501 is not set
        # CONFIG_HTC_PASIC3 is not set
+++++ ++# CONFIG_TWL4030_CORE is not set
        # CONFIG_MFD_TMIO is not set
+++++ ++# CONFIG_PMIC_DA903X is not set
+++++ ++# CONFIG_MFD_WM8400 is not set
+++++ ++# CONFIG_MFD_WM8350_I2C is not set
+++++ ++# CONFIG_MFD_PCF50633 is not set
+++++ ++# CONFIG_REGULATOR is not set
        
        #
        # Multimedia devices
        # CONFIG_DRM_I810 is not set
        # CONFIG_DRM_I830 is not set
        CONFIG_DRM_I915=y
+++++ ++CONFIG_DRM_I915_KMS=y
        # CONFIG_DRM_MGA is not set
        # CONFIG_DRM_SIS is not set
        # CONFIG_DRM_VIA is not set
        CONFIG_FB=y
        # CONFIG_FIRMWARE_EDID is not set
        # CONFIG_FB_DDC is not set
+++++ ++# CONFIG_FB_BOOT_VESA_SUPPORT is not set
        CONFIG_FB_CFB_FILLRECT=y
        CONFIG_FB_CFB_COPYAREA=y
        CONFIG_FB_CFB_IMAGEBLIT=y
@@@@@@@@@ -1459,7 -1460,7 -1460,7 -1460,7 -1460,7 -1607,6 -1460,7 -1460,7 +1606,6 @@@@@@@@@ CONFIG_FB_TILEBLITTING=
        # CONFIG_FB_UVESA is not set
        # CONFIG_FB_VESA is not set
        CONFIG_FB_EFI=y
----- --# CONFIG_FB_IMAC is not set
        # CONFIG_FB_N411 is not set
        # CONFIG_FB_HGA is not set
        # CONFIG_FB_S1D13XXX is not set
        # CONFIG_FB_S3 is not set
        # CONFIG_FB_SAVAGE is not set
        # CONFIG_FB_SIS is not set
+++++ ++# CONFIG_FB_VIA is not set
        # CONFIG_FB_NEOMAGIC is not set
        # CONFIG_FB_KYRO is not set
        # CONFIG_FB_3DFX is not set
        # CONFIG_FB_CARMINE is not set
        # CONFIG_FB_GEODE is not set
        # CONFIG_FB_VIRTUAL is not set
+++++ ++# CONFIG_FB_METRONOME is not set
+++++ ++# CONFIG_FB_MB862XX is not set
        CONFIG_BACKLIGHT_LCD_SUPPORT=y
        # CONFIG_LCD_CLASS_DEVICE is not set
        CONFIG_BACKLIGHT_CLASS_DEVICE=y
----- --# CONFIG_BACKLIGHT_CORGI is not set
+++++ ++CONFIG_BACKLIGHT_GENERIC=y
        # CONFIG_BACKLIGHT_PROGEAR is not set
        # CONFIG_BACKLIGHT_MBP_NVIDIA is not set
+++++ ++# CONFIG_BACKLIGHT_SAHARA is not set
        
        #
        # Display device support
        # CONFIG_LOGO_LINUX_VGA16 is not set
        CONFIG_LOGO_LINUX_CLUT224=y
        CONFIG_SOUND=y
+++++ ++CONFIG_SOUND_OSS_CORE=y
        CONFIG_SND=y
        CONFIG_SND_TIMER=y
        CONFIG_SND_PCM=y
        CONFIG_SND_HWDEP=y
+++++ ++CONFIG_SND_JACK=y
        CONFIG_SND_SEQUENCER=y
        CONFIG_SND_SEQ_DUMMY=y
        CONFIG_SND_OSSEMUL=y
@@@@@@@@@ -1521,6 -1522,6 -1522,6 -1522,6 -1522,6 -1674,8 -1522,6 -1522,6 +1673,8 @@@@@@@@@ CONFIG_SND_MIXER_OSS=
        CONFIG_SND_PCM_OSS=y
        CONFIG_SND_PCM_OSS_PLUGINS=y
        CONFIG_SND_SEQUENCER_OSS=y
+++++ ++CONFIG_SND_HRTIMER=y
+++++ ++CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
        CONFIG_SND_DYNAMIC_MINORS=y
        CONFIG_SND_SUPPORT_OLD_API=y
        CONFIG_SND_VERBOSE_PROCFS=y
        # CONFIG_SND_FM801 is not set
        CONFIG_SND_HDA_INTEL=y
        CONFIG_SND_HDA_HWDEP=y
+++++ ++# CONFIG_SND_HDA_RECONFIG is not set
+++++ ++# CONFIG_SND_HDA_INPUT_BEEP 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_NVHDMI=y
+++++ ++CONFIG_SND_HDA_CODEC_INTELHDMI=y
+++++ ++CONFIG_SND_HDA_ELD=y
        CONFIG_SND_HDA_CODEC_CONEXANT=y
        CONFIG_SND_HDA_CODEC_CMEDIA=y
        CONFIG_SND_HDA_CODEC_SI3054=y
@@@@@@@@@ -1611,6 -1612,6 -1612,6 -1612,6 -1612,6 -1771,7 -1612,6 -1612,6 +1770,7 @@@@@@@@@ CONFIG_SND_USB=
        # CONFIG_SND_USB_AUDIO is not set
        # CONFIG_SND_USB_USX2Y is not set
        # CONFIG_SND_USB_CAIAQ is not set
+++++ ++# CONFIG_SND_USB_US122L is not set
        CONFIG_SND_PCMCIA=y
        # CONFIG_SND_VXPOCKET is not set
        # CONFIG_SND_PDAUDIOCF is not set
        # USB Input Devices
        #
        CONFIG_USB_HID=y
----- --CONFIG_USB_HIDINPUT_POWERBOOK=y
----- --CONFIG_HID_FF=y
        CONFIG_HID_PID=y
+++++ ++CONFIG_USB_HIDDEV=y
+++++ ++
+++++ ++#
+++++ ++# Special HID drivers
+++++ ++#
+++++ ++CONFIG_HID_COMPAT=y
+++++ ++CONFIG_HID_A4TECH=y
+++++ ++CONFIG_HID_APPLE=y
+++++ ++CONFIG_HID_BELKIN=y
+++++ ++CONFIG_HID_CHERRY=y
+++++ ++CONFIG_HID_CHICONY=y
+++++ ++CONFIG_HID_CYPRESS=y
+++++ ++CONFIG_HID_EZKEY=y
+++++ ++CONFIG_HID_GYRATION=y
+++++ ++CONFIG_HID_LOGITECH=y
        CONFIG_LOGITECH_FF=y
        # CONFIG_LOGIRUMBLEPAD2_FF is not set
+++++ ++CONFIG_HID_MICROSOFT=y
+++++ ++CONFIG_HID_MONTEREY=y
+++++ ++CONFIG_HID_NTRIG=y
+++++ ++CONFIG_HID_PANTHERLORD=y
        CONFIG_PANTHERLORD_FF=y
+++++ ++CONFIG_HID_PETALYNX=y
+++++ ++CONFIG_HID_SAMSUNG=y
+++++ ++CONFIG_HID_SONY=y
+++++ ++CONFIG_HID_SUNPLUS=y
+++++ ++# CONFIG_GREENASIA_FF is not set
+++++ ++CONFIG_HID_TOPSEED=y
        CONFIG_THRUSTMASTER_FF=y
        CONFIG_ZEROPLUS_FF=y
----- --CONFIG_USB_HIDDEV=y
        CONFIG_USB_SUPPORT=y
        CONFIG_USB_ARCH_HAS_HCD=y
        CONFIG_USB_ARCH_HAS_OHCI=y
@@@@@@@@@ -1651,6 -1652,6 -1652,6 -1652,6 -1652,6 -1834,8 -1652,6 -1652,6 +1833,8 @@@@@@@@@ CONFIG_USB_DEVICEFS=
        CONFIG_USB_SUSPEND=y
        # CONFIG_USB_OTG is not set
        CONFIG_USB_MON=y
+++++ ++# CONFIG_USB_WUSB is not set
+++++ ++# CONFIG_USB_WUSB_CBAF is not set
        
        #
        # USB Host Controller Drivers
        CONFIG_USB_EHCI_HCD=y
        # CONFIG_USB_EHCI_ROOT_HUB_TT is not set
        # CONFIG_USB_EHCI_TT_NEWSCHED is not set
+++++ ++# CONFIG_USB_OXU210HP_HCD is not set
        # CONFIG_USB_ISP116X_HCD is not set
        # CONFIG_USB_ISP1760_HCD is not set
        CONFIG_USB_OHCI_HCD=y
@@@@@@@@@ -1668,6 -1669,6 -1669,6 -1669,6 -1669,6 -1854,8 -1669,6 -1669,6 +1853,8 @@@@@@@@@ CONFIG_USB_OHCI_LITTLE_ENDIAN=
        CONFIG_USB_UHCI_HCD=y
        # CONFIG_USB_SL811_HCD is not set
        # CONFIG_USB_R8A66597_HCD is not set
+++++ ++# CONFIG_USB_WHCI_HCD is not set
+++++ ++# CONFIG_USB_HWA_HCD is not set
        
        #
        # USB Device Class drivers
        # CONFIG_USB_ACM is not set
        CONFIG_USB_PRINTER=y
        # CONFIG_USB_WDM is not set
+++++ ++# CONFIG_USB_TMC is not set
        
        #
----- --# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+++++ ++# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
        #
        
        #
----- --# may also be needed; see USB_STORAGE Help for more information
+++++ ++# see USB_STORAGE Help for more information
        #
        CONFIG_USB_STORAGE=y
        # CONFIG_USB_STORAGE_DEBUG is not set
        # CONFIG_USB_STORAGE_DATAFAB is not set
        # CONFIG_USB_STORAGE_FREECOM is not set
        # CONFIG_USB_STORAGE_ISD200 is not set
----- --# CONFIG_USB_STORAGE_DPCM is not set
        # CONFIG_USB_STORAGE_USBAT is not set
        # CONFIG_USB_STORAGE_SDDR09 is not set
        # CONFIG_USB_STORAGE_SDDR55 is not set
        # CONFIG_USB_STORAGE_ALAUDA is not set
        # CONFIG_USB_STORAGE_ONETOUCH is not set
        # CONFIG_USB_STORAGE_KARMA is not set
----- --# CONFIG_USB_STORAGE_SIERRA is not set
        # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
        CONFIG_USB_LIBUSUAL=y
        
        # CONFIG_USB_EMI62 is not set
        # CONFIG_USB_EMI26 is not set
        # CONFIG_USB_ADUTUX is not set
+++++ ++# CONFIG_USB_SEVSEG is not set
        # CONFIG_USB_RIO500 is not set
        # CONFIG_USB_LEGOTOWER is not set
        # CONFIG_USB_LCD is not set
        # CONFIG_USB_IOWARRIOR is not set
        # CONFIG_USB_TEST is not set
        # CONFIG_USB_ISIGHTFW is not set
+++++ ++# CONFIG_USB_VST is not set
        # CONFIG_USB_GADGET is not set
+++++ ++
+++++ ++#
+++++ ++# OTG and related infrastructure
+++++ ++#
+++++ ++# CONFIG_UWB is not set
        # CONFIG_MMC is not set
        # CONFIG_MEMSTICK is not set
        CONFIG_NEW_LEDS=y
@@@@@@@@@ -1743,6 -1744,6 -1744,6 -1744,6 -1744,6 -1937,7 -1744,6 -1744,6 +1936,7 @@@@@@@@@ CONFIG_LEDS_CLASS=
        #
        # LED drivers
        #
+++++ ++# CONFIG_LEDS_ALIX2 is not set
        # CONFIG_LEDS_PCA9532 is not set
        # CONFIG_LEDS_CLEVO_MAIL is not set
        # CONFIG_LEDS_PCA955X is not set
        CONFIG_LEDS_TRIGGERS=y
        # CONFIG_LEDS_TRIGGER_TIMER is not set
        # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+++++ ++# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
        # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
        # CONFIG_ACCESSIBILITY is not set
        # CONFIG_INFINIBAND is not set
@@@@@@@@@ -1792,6 -1793,6 -1793,6 -1793,6 -1793,6 -1988,7 -1793,6 -1793,6 +1987,7 @@@@@@@@@ CONFIG_RTC_INTF_DEV=
        # CONFIG_RTC_DRV_M41T80 is not set
        # CONFIG_RTC_DRV_S35390A is not set
        # CONFIG_RTC_DRV_FM3130 is not set
+++++ ++# CONFIG_RTC_DRV_RX8581 is not set
        
        #
        # SPI RTC drivers
        # Platform RTC drivers
        #
        CONFIG_RTC_DRV_CMOS=y
+++++ ++# CONFIG_RTC_DRV_DS1286 is not set
        # CONFIG_RTC_DRV_DS1511 is not set
        # CONFIG_RTC_DRV_DS1553 is not set
        # CONFIG_RTC_DRV_DS1742 is not set
        # CONFIG_RTC_DRV_STK17TA8 is not set
        # CONFIG_RTC_DRV_M48T86 is not set
+++++ ++# CONFIG_RTC_DRV_M48T35 is not set
        # CONFIG_RTC_DRV_M48T59 is not set
+++++ ++# CONFIG_RTC_DRV_BQ4802 is not set
        # CONFIG_RTC_DRV_V3020 is not set
        
        #
@@@@@@@@@ -1819,6 -1820,6 -1820,6 -1820,6 -1820,6 -2019,21 -1820,6 -1820,6 +2018,21 @@@@@@@@@ CONFIG_DMADEVICES=
        #
        # CONFIG_INTEL_IOATDMA is not set
        # CONFIG_UIO is not set
+++++ ++# CONFIG_STAGING is not set
+++++ ++CONFIG_X86_PLATFORM_DEVICES=y
+++++ ++# CONFIG_ACER_WMI is not set
+++++ ++# CONFIG_ASUS_LAPTOP is not set
+++++ ++# CONFIG_FUJITSU_LAPTOP is not set
+++++ ++# CONFIG_MSI_LAPTOP is not set
+++++ ++# CONFIG_PANASONIC_LAPTOP is not set
+++++ ++# CONFIG_COMPAL_LAPTOP is not set
+++++ ++# CONFIG_SONY_LAPTOP is not set
+++++ ++# CONFIG_THINKPAD_ACPI is not set
+++++ ++# CONFIG_INTEL_MENLOW is not set
+++++ ++CONFIG_EEEPC_LAPTOP=y
+++++ ++# CONFIG_ACPI_WMI is not set
+++++ ++# CONFIG_ACPI_ASUS is not set
+++++ ++# CONFIG_ACPI_TOSHIBA is not set
        
        #
        # Firmware Drivers
@@@@@@@@@ -1829,8 -1830,8 -1830,8 -1830,8 -1830,8 -2044,7 -1830,8 -1830,8 +2043,7 @@@@@@@@@ CONFIG_EFI_VARS=
        # CONFIG_DELL_RBU is not set
        # CONFIG_DCDBAS is not set
        CONFIG_DMIID=y
----- --CONFIG_ISCSI_IBFT_FIND=y
----- --CONFIG_ISCSI_IBFT=y
+++++ ++# CONFIG_ISCSI_IBFT_FIND is not set
        
        #
        # File systems
        CONFIG_EXT3_FS_XATTR=y
        CONFIG_EXT3_FS_POSIX_ACL=y
        CONFIG_EXT3_FS_SECURITY=y
----- --# CONFIG_EXT4DEV_FS is not set
+++++ ++# CONFIG_EXT4_FS is not set
        CONFIG_JBD=y
        # CONFIG_JBD_DEBUG is not set
        CONFIG_FS_MBCACHE=y
        # CONFIG_REISERFS_FS is not set
        # CONFIG_JFS_FS is not set
        CONFIG_FS_POSIX_ACL=y
+++++ ++CONFIG_FILE_LOCKING=y
        # CONFIG_XFS_FS is not set
        # CONFIG_GFS2_FS is not set
        # CONFIG_OCFS2_FS is not set
+++++ ++# CONFIG_BTRFS_FS is not set
        CONFIG_DNOTIFY=y
        CONFIG_INOTIFY=y
        CONFIG_INOTIFY_USER=y
        CONFIG_QUOTA=y
        CONFIG_QUOTA_NETLINK_INTERFACE=y
        # CONFIG_PRINT_QUOTA_WARNING is not set
+++++ ++CONFIG_QUOTA_TREE=y
        # CONFIG_QFMT_V1 is not set
        CONFIG_QFMT_V2=y
        CONFIG_QUOTACTL=y
        CONFIG_PROC_KCORE=y
        CONFIG_PROC_VMCORE=y
        CONFIG_PROC_SYSCTL=y
+++++ ++CONFIG_PROC_PAGE_MONITOR=y
        CONFIG_SYSFS=y
        CONFIG_TMPFS=y
        CONFIG_TMPFS_POSIX_ACL=y
        CONFIG_HUGETLBFS=y
        CONFIG_HUGETLB_PAGE=y
        # CONFIG_CONFIGFS_FS is not set
----- --
----- --#
----- --# Miscellaneous filesystems
----- --#
+++++ ++CONFIG_MISC_FILESYSTEMS=y
        # CONFIG_ADFS_FS is not set
        # CONFIG_AFFS_FS is not set
        # CONFIG_ECRYPT_FS is not set
        # CONFIG_BFS_FS is not set
        # CONFIG_EFS_FS is not set
        # CONFIG_CRAMFS is not set
+++++ ++# CONFIG_SQUASHFS is not set
        # CONFIG_VXFS_FS is not set
        # CONFIG_MINIX_FS is not set
        # CONFIG_OMFS_FS is not set
@@@@@@@@@ -1929,6 -1930,6 -1930,6 -1930,6 -1930,6 -2145,7 -1930,6 -1930,6 +2144,7 @@@@@@@@@ CONFIG_NFS_ACL_SUPPORT=
        CONFIG_NFS_COMMON=y
        CONFIG_SUNRPC=y
        CONFIG_SUNRPC_GSS=y
+++++ ++# CONFIG_SUNRPC_REGISTER_V4 is not set
        CONFIG_RPCSEC_GSS_KRB5=y
        # CONFIG_RPCSEC_GSS_SPKM3 is not set
        # CONFIG_SMB_FS is not set
@@@@@@@@@ -2005,7 -2006,7 -2006,7 -2006,7 -2006,7 -2222,7 -2006,7 -2006,7 +2221,7 @@@@@@@@@ CONFIG_NLS_UTF8=
        #
        CONFIG_TRACE_IRQFLAGS_SUPPORT=y
        CONFIG_PRINTK_TIME=y
----- --CONFIG_ENABLE_WARN_DEPRECATED=y
+++++ ++# CONFIG_ENABLE_WARN_DEPRECATED is not set
        CONFIG_ENABLE_MUST_CHECK=y
        CONFIG_FRAME_WARN=2048
        CONFIG_MAGIC_SYSRQ=y
@@@@@@@@@ -2034,40 -2035,40 -2035,40 -2035,40 -2035,40 -2251,60 -2035,40 -2035,40 +2250,60 @@@@@@@@@ CONFIG_TIMER_STATS=
        CONFIG_DEBUG_BUGVERBOSE=y
        # CONFIG_DEBUG_INFO is not set
        # CONFIG_DEBUG_VM is not set
+++++ ++# CONFIG_DEBUG_VIRTUAL is not set
        # CONFIG_DEBUG_WRITECOUNT is not set
        CONFIG_DEBUG_MEMORY_INIT=y
        # CONFIG_DEBUG_LIST is not set
        # CONFIG_DEBUG_SG is not set
+++++ ++# CONFIG_DEBUG_NOTIFIERS is not set
+++++ ++CONFIG_ARCH_WANT_FRAME_POINTERS=y
        CONFIG_FRAME_POINTER=y
        # CONFIG_BOOT_PRINTK_DELAY is not set
        # CONFIG_RCU_TORTURE_TEST is not set
+++++ ++# CONFIG_RCU_CPU_STALL_DETECTOR is not set
        # CONFIG_KPROBES_SANITY_TEST is not set
        # CONFIG_BACKTRACE_SELF_TEST is not set
+++++ ++# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
        # CONFIG_LKDTM is not set
        # CONFIG_FAULT_INJECTION is not set
        # CONFIG_LATENCYTOP is not set
        CONFIG_SYSCTL_SYSCALL_CHECK=y
----- --CONFIG_HAVE_FTRACE=y
+++++ ++CONFIG_USER_STACKTRACE_SUPPORT=y
+++++ ++CONFIG_HAVE_FUNCTION_TRACER=y
+++++ ++CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+++++ ++CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
        CONFIG_HAVE_DYNAMIC_FTRACE=y
----- --# CONFIG_FTRACE is not set
+++++ ++CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+++++ ++CONFIG_HAVE_HW_BRANCH_TRACER=y
+++++ ++
+++++ ++#
+++++ ++# Tracers
+++++ ++#
+++++ ++# CONFIG_FUNCTION_TRACER is not set
        # CONFIG_IRQSOFF_TRACER is not set
        # CONFIG_SYSPROF_TRACER is not set
        # CONFIG_SCHED_TRACER is not set
        # CONFIG_CONTEXT_SWITCH_TRACER is not set
+++++ ++# CONFIG_BOOT_TRACER is not set
+++++ ++# CONFIG_TRACE_BRANCH_PROFILING is not set
+++++ ++# CONFIG_POWER_TRACER is not set
+++++ ++# CONFIG_STACK_TRACER is not set
+++++ ++# CONFIG_HW_BRANCH_TRACER is not set
        CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
+++++ ++# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
        # CONFIG_SAMPLES is not set
        CONFIG_HAVE_ARCH_KGDB=y
        # CONFIG_KGDB is not set
        # CONFIG_STRICT_DEVMEM is not set
        CONFIG_X86_VERBOSE_BOOTUP=y
        CONFIG_EARLY_PRINTK=y
+++++ ++CONFIG_EARLY_PRINTK_DBGP=y
        CONFIG_DEBUG_STACKOVERFLOW=y
        CONFIG_DEBUG_STACK_USAGE=y
        # CONFIG_DEBUG_PAGEALLOC is not set
        # CONFIG_DEBUG_PER_CPU_MAPS is not set
        # CONFIG_X86_PTDUMP is not set
        CONFIG_DEBUG_RODATA=y
----- --# CONFIG_DIRECT_GBPAGES is not set
        # CONFIG_DEBUG_RODATA_TEST is not set
        CONFIG_DEBUG_NX_TEST=m
        # CONFIG_IOMMU_DEBUG is not set
@@@@@@@@@ -2091,8 -2092,8 -2092,8 -2092,8 -2092,8 -2328,10 -2092,8 -2092,8 +2327,10 @@@@@@@@@ CONFIG_OPTIMIZE_INLINING=
        CONFIG_KEYS=y
        CONFIG_KEYS_DEBUG_PROC_KEYS=y
        CONFIG_SECURITY=y
+++++ ++# CONFIG_SECURITYFS is not set
        CONFIG_SECURITY_NETWORK=y
        # CONFIG_SECURITY_NETWORK_XFRM is not set
+++++ ++# CONFIG_SECURITY_PATH is not set
        CONFIG_SECURITY_FILE_CAPABILITIES=y
        # CONFIG_SECURITY_ROOTPLUG is not set
        CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=65536
@@@@@@@@@ -2103,7 -2104,7 -2104,7 -2104,7 -2104,7 -2342,6 -2104,7 -2104,7 +2341,6 @@@@@@@@@ CONFIG_SECURITY_SELINUX_DISABLE=
        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_SECURITY_SMACK is not set
        CONFIG_CRYPTO=y
        #
        # Crypto core or helper
        #
+++++ ++# CONFIG_CRYPTO_FIPS is not set
        CONFIG_CRYPTO_ALGAPI=y
+++++ ++CONFIG_CRYPTO_ALGAPI2=y
        CONFIG_CRYPTO_AEAD=y
+++++ ++CONFIG_CRYPTO_AEAD2=y
        CONFIG_CRYPTO_BLKCIPHER=y
+++++ ++CONFIG_CRYPTO_BLKCIPHER2=y
        CONFIG_CRYPTO_HASH=y
+++++ ++CONFIG_CRYPTO_HASH2=y
+++++ ++CONFIG_CRYPTO_RNG2=y
        CONFIG_CRYPTO_MANAGER=y
+++++ ++CONFIG_CRYPTO_MANAGER2=y
        # CONFIG_CRYPTO_GF128MUL is not set
        # CONFIG_CRYPTO_NULL is not set
        # CONFIG_CRYPTO_CRYPTD is not set
@@@@@@@@@ -2150,6 -2151,6 -2151,6 -2151,6 -2151,6 -2395,7 -2151,6 -2151,6 +2394,7 @@@@@@@@@ CONFIG_CRYPTO_HMAC=
        # Digest
        #
        # CONFIG_CRYPTO_CRC32C is not set
+++++ ++# CONFIG_CRYPTO_CRC32C_INTEL is not set
        # CONFIG_CRYPTO_MD4 is not set
        CONFIG_CRYPTO_MD5=y
        # CONFIG_CRYPTO_MICHAEL_MIC is not set
@@@@@@@@@ -2190,6 -2191,6 -2191,6 -2191,6 -2191,6 -2436,11 -2191,6 -2191,6 +2435,11 @@@@@@@@@ CONFIG_CRYPTO_DES=
        #
        # CONFIG_CRYPTO_DEFLATE is not set
        # CONFIG_CRYPTO_LZO is not set
+++++ ++
+++++ ++#
+++++ ++# Random Number Generation
+++++ ++#
+++++ ++# CONFIG_CRYPTO_ANSI_CPRNG is not set
        CONFIG_CRYPTO_HW=y
        # CONFIG_CRYPTO_DEV_HIFN_795X is not set
        CONFIG_HAVE_KVM=y
@@@@@@@@@ -2204,6 -2205,6 -2205,6 -2205,6 -2205,6 -2455,7 -2205,6 -2205,6 +2454,7 @@@@@@@@@ CONFIG_VIRTUALIZATION=
        CONFIG_BITREVERSE=y
        CONFIG_GENERIC_FIND_FIRST_BIT=y
        CONFIG_GENERIC_FIND_NEXT_BIT=y
+++++ ++CONFIG_GENERIC_FIND_LAST_BIT=y
        # CONFIG_CRC_CCITT is not set
        # CONFIG_CRC16 is not set
        CONFIG_CRC_T10DIF=y
@@@@@@@@@ -4,7 -4,7 -4,7 -4,6 -4,7 -4,7 -4,8 -4,7 +4,8 @@@@@@@@@
        #define ARCH_HAS_IOREMAP_WC
        
        #include <linux/compiler.h>
   +    #include <asm-generic/int-ll64.h>
++++++ +#include <asm/page.h>
        
        #define build_mmio_read(name, size, type, reg, barrier) \
        static inline type name(const volatile void __iomem *addr) \
@@@@@@@@@ -46,40 -46,40 -46,40 -45,22 -46,40 -46,40 -47,129 -46,40 +47,129 @@@@@@@@@ build_mmio_write(__writel, "l", unsigne
        #define mmiowb() barrier()
        
        #ifdef CONFIG_X86_64
   +    
        build_mmio_read(readq, "q", unsigned long, "=r", :"memory")
   -    build_mmio_read(__readq, "q", unsigned long, "=r", )
        build_mmio_write(writeq, "q", unsigned long, "r", :"memory")
   -    build_mmio_write(__writeq, "q", unsigned long, "r", )
        
   -    #define readq_relaxed(a) __readq(a)
   -    #define __raw_readq __readq
   -    #define __raw_writeq writeq
   +    #else
   +    
   +    static inline __u64 readq(const volatile void __iomem *addr)
   +    {
   +            const volatile u32 __iomem *p = addr;
   +            u32 low, high;
   +    
   +            low = readl(p);
   +            high = readl(p + 1);
   +    
   +            return low + ((u64)high << 32);
   +    }
   +    
   +    static inline void writeq(__u64 val, volatile void __iomem *addr)
   +    {
   +            writel(val, addr);
   +            writel(val >> 32, addr+4);
   +    }
        
   -    /* Let people know we have them */
   -    #define readq readq
   -    #define writeq writeq
        #endif
        
   -    extern int iommu_bio_merge;
   +    #define readq_relaxed(a)        readq(a)
   +    
   +    #define __raw_readq(a)          readq(a)
   +    #define __raw_writeq(val, addr) writeq(val, addr)
   +    
   +    /* Let people know that we have them */
   +    #define readq                   readq
   +    #define writeq                  writeq
   +    
++++++ +/**
++++++ + *      virt_to_phys    -       map virtual addresses to physical
++++++ + *      @address: address to remap
++++++ + *
++++++ + *      The returned physical address is the physical (CPU) mapping for
++++++ + *      the memory address given. It is only valid to use this function on
++++++ + *      addresses directly mapped or allocated via kmalloc.
++++++ + *
++++++ + *      This function does not give bus mappings for DMA transfers. In
++++++ + *      almost all conceivable cases a device driver should not be using
++++++ + *      this function
++++++ + */
++++++ +
++++++ +static inline phys_addr_t virt_to_phys(volatile void *address)
++++++ +{
++++++ +        return __pa(address);
++++++ +}
++++++ +
++++++ +/**
++++++ + *      phys_to_virt    -       map physical address to virtual
++++++ + *      @address: address to remap
++++++ + *
++++++ + *      The returned virtual address is a current CPU mapping for
++++++ + *      the memory address given. It is only valid to use this function on
++++++ + *      addresses that have a kernel mapping
++++++ + *
++++++ + *      This function does not handle bus mappings for DMA transfers. In
++++++ + *      almost all conceivable cases a device driver should not be using
++++++ + *      this function
++++++ + */
++++++ +
++++++ +static inline void *phys_to_virt(phys_addr_t address)
++++++ +{
++++++ +        return __va(address);
++++++ +}
++++++ +
++++++ +/*
++++++ + * Change "struct page" to physical address.
++++++ + */
++++++ +#define page_to_phys(page)    ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT)
++++++ +
++++++ +/*
++++++ + * ISA I/O bus memory addresses are 1:1 with the physical address.
++++++ + */
++++++ +#define isa_virt_to_bus virt_to_phys
++++++ +#define isa_page_to_bus page_to_phys
++++++ +#define isa_bus_to_virt phys_to_virt
++++++ +
++++++ +/*
++++++ + * However PCI ones are not necessarily 1:1 and therefore these interfaces
++++++ + * are forbidden in portable PCI drivers.
++++++ + *
++++++ + * Allow them on x86 for legacy drivers, though.
++++++ + */
++++++ +#define virt_to_bus virt_to_phys
++++++ +#define bus_to_virt phys_to_virt
++++++ +
++++++ +/**
++++++ + * ioremap     -   map bus memory into CPU space
++++++ + * @offset:    bus address of the memory
++++++ + * @size:      size of the resource to map
++++++ + *
++++++ + * ioremap performs a platform specific sequence of operations to
++++++ + * make bus memory CPU accessible via the readb/readw/readl/writeb/
++++++ + * writew/writel functions and the other mmio helpers. The returned
++++++ + * address is not guaranteed to be usable directly as a virtual
++++++ + * address.
++++++ + *
++++++ + * If the area you are trying to map is a PCI BAR you should have a
++++++ + * look at pci_iomap().
++++++ + */
++++++ +extern void __iomem *ioremap_nocache(resource_size_t offset, unsigned long size);
++++++ +extern void __iomem *ioremap_cache(resource_size_t offset, unsigned long size);
++++++ +extern void __iomem *ioremap_prot(resource_size_t offset, unsigned long size,
++++++ +                                unsigned long prot_val);
++++++ +
++++++ +/*
++++++ + * The default ioremap() behavior is non-cached:
++++++ + */
++++++ +static inline void __iomem *ioremap(resource_size_t offset, unsigned long size)
++++++ +{
++++++ +        return ioremap_nocache(offset, size);
++++++ +}
++++++ +
++++++ +extern void iounmap(volatile void __iomem *addr);
++++++ +
++++++ +extern void __iomem *fix_ioremap(unsigned idx, unsigned long phys);
++++++ +
+++ ++ +
        #ifdef CONFIG_X86_32
        # include "io_32.h"
        #else
@@@@@@@@@ -91,7 -91,7 -91,7 -72,7 -91,7 -91,7 -181,7 -91,7 +181,7 @@@@@@@@@ extern void unxlate_dev_mem_ptr(unsigne
        
        extern int ioremap_change_attr(unsigned long vaddr, unsigned long size,
                                        unsigned long prot_val);
 -------extern void __iomem *ioremap_wc(unsigned long offset, unsigned long size);
 +++++++extern void __iomem *ioremap_wc(resource_size_t offset, unsigned long size);
        
        /*
         * early_ioremap() and early_iounmap() are for temporary early boot-time
         * A boot-time mapping is currently limited to at most 16 pages.
         */
        extern void early_ioremap_init(void);
  ---   extern void early_ioremap_clear(void);
        extern void early_ioremap_reset(void);
        extern void __iomem *early_ioremap(unsigned long offset, unsigned long size);
        extern void __iomem *early_memremap(unsigned long offset, unsigned long size);
        extern void early_iounmap(void __iomem *addr, unsigned long size);
        extern void __iomem *fix_ioremap(unsigned idx, unsigned long phys);
        
 +++++++#define IO_SPACE_LIMIT 0xffff
        
        #endif /* _ASM_X86_IO_H */
          *  - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
          */
        
 -------#define IO_SPACE_LIMIT 0xffff
 -------
        #define XQUAD_PORTIO_BASE 0xfe400000
        #define XQUAD_PORTIO_QUAD 0x40000  /* 256k per quad. */
        
         */
        #define xlate_dev_kmem_ptr(p)   p
        
------ -/**
------ - *      virt_to_phys    -       map virtual addresses to physical
------ - *      @address: address to remap
------ - *
------ - *      The returned physical address is the physical (CPU) mapping for
------ - *      the memory address given. It is only valid to use this function on
------ - *      addresses directly mapped or allocated via kmalloc.
------ - *
------ - *      This function does not give bus mappings for DMA transfers. In
------ - *      almost all conceivable cases a device driver should not be using
------ - *      this function
------ - */
------ -
------ -static inline unsigned long virt_to_phys(volatile void *address)
------ -{
------ -        return __pa(address);
------ -}
------ -
------ -/**
------ - *      phys_to_virt    -       map physical address to virtual
------ - *      @address: address to remap
------ - *
------ - *      The returned virtual address is a current CPU mapping for
------ - *      the memory address given. It is only valid to use this function on
------ - *      addresses that have a kernel mapping
------ - *
------ - *      This function does not handle bus mappings for DMA transfers. In
------ - *      almost all conceivable cases a device driver should not be using
------ - *      this function
------ - */
------ -
------ -static inline void *phys_to_virt(unsigned long address)
------ -{
------ -        return __va(address);
------ -}
------ -
------ -/*
------ - * Change "struct page" to physical address.
------ - */
------ -#define page_to_phys(page)    ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT)
------ -
------ -/**
------ - * ioremap     -   map bus memory into CPU space
------ - * @offset:    bus address of the memory
------ - * @size:      size of the resource to map
------ - *
------ - * ioremap performs a platform specific sequence of operations to
------ - * make bus memory CPU accessible via the readb/readw/readl/writeb/
------ - * writew/writel functions and the other mmio helpers. The returned
------ - * address is not guaranteed to be usable directly as a virtual
------ - * address.
------ - *
------ - * If the area you are trying to map is a PCI BAR you should have a
------ - * look at pci_iomap().
------ - */
------ -extern void __iomem *ioremap_nocache(resource_size_t offset, unsigned long size);
------ -extern void __iomem *ioremap_cache(resource_size_t offset, unsigned long size);
------ -extern void __iomem *ioremap_prot(resource_size_t offset, unsigned long size,
------ -                                unsigned long prot_val);
------ -
------ -/*
------ - * The default ioremap() behavior is non-cached:
------ - */
------ -static inline void __iomem *ioremap(resource_size_t offset, unsigned long size)
------ -{
------ -        return ioremap_nocache(offset, size);
------ -}
------ -
------ -extern void iounmap(volatile void __iomem *addr);
------ -
------ -/*
------ - * ISA I/O bus memory addresses are 1:1 with the physical address.
------ - */
------ -#define isa_virt_to_bus virt_to_phys
------ -#define isa_page_to_bus page_to_phys
------ -#define isa_bus_to_virt phys_to_virt
------ -
------ -/*
------ - * However PCI ones are not necessarily 1:1 and therefore these interfaces
------ - * are forbidden in portable PCI drivers.
------ - *
------ - * Allow them on x86 for legacy drivers, though.
------ - */
------ -#define virt_to_bus virt_to_phys
------ -#define bus_to_virt phys_to_virt
------ -
        static inline void
        memset_io(volatile void __iomem *addr, unsigned char val, int count)
        {
        __OUTS(w)
        __OUTS(l)
        
 -------#define IO_SPACE_LIMIT 0xffff
 -------
        #if defined(__KERNEL__) && defined(__x86_64__)
        
        #include <linux/vmalloc.h>
        
------ -#ifndef __i386__
------ -/*
------ - * Change virtual addresses to physical addresses and vv.
------ - * These are pretty trivial
------ - */
------ -static inline unsigned long virt_to_phys(volatile void *address)
------ -{
------ -        return __pa(address);
------ -}
------ -
------ -static inline void *phys_to_virt(unsigned long address)
------ -{
------ -        return __va(address);
------ -}
------ -#endif
------ -
------ -/*
------ - * Change "struct page" to physical address.
------ - */
------ -#define page_to_phys(page)    ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT)
------ -
        #include <asm-generic/iomap.h>
        
------ -/*
------ - * This one maps high address device memory and turns off caching for that area.
------ - * it's useful if some control registers are in such an area and write combining
------ - * or read caching is not desirable:
------ - */
------ -extern void __iomem *ioremap_nocache(resource_size_t offset, unsigned long size);
------ -extern void __iomem *ioremap_cache(resource_size_t offset, unsigned long size);
------ -extern void __iomem *ioremap_prot(resource_size_t offset, unsigned long size,
------ -                                unsigned long prot_val);
------ -
------ -/*
------ - * The default ioremap() behavior is non-cached:
------ - */
------ -static inline void __iomem *ioremap(resource_size_t offset, unsigned long size)
------ -{
------ -        return ioremap_nocache(offset, size);
------ -}
------ -
------ -extern void iounmap(volatile void __iomem *addr);
------ -
------ -extern void __iomem *fix_ioremap(unsigned idx, unsigned long phys);
------ -
------ -/*
------ - * ISA I/O bus memory addresses are 1:1 with the physical address.
------ - */
------ -#define isa_virt_to_bus virt_to_phys
------ -#define isa_page_to_bus page_to_phys
------ -#define isa_bus_to_virt phys_to_virt
------ -
------ -/*
------ - * However PCI ones are not necessarily 1:1 and therefore these interfaces
------ - * are forbidden in portable PCI drivers.
------ - *
------ - * Allow them on x86 for legacy drivers, though.
------ - */
------ -#define virt_to_bus virt_to_phys
------ -#define bus_to_virt phys_to_virt
------ -
        void __memcpy_fromio(void *, unsigned long, unsigned);
        void __memcpy_toio(unsigned long, const void *, unsigned);
        
@@@@@@@@@ -230,6 -232,6 -232,6 -232,8 -232,6 -232,6 -173,6 -232,6 +171,6 @@@@@@@@@ void memset_io(volatile void __iomem *a
        
        #define flush_write_buffers()
        
   -    #define BIO_VMERGE_BOUNDARY iommu_bio_merge
   -    
        /*
         * Convert a virtual cached pointer to an uncached pointer
         */
@@@@@@@@@ -95,6 -95,6 -95,6 -95,6 -95,6 -95,6 -95,11 -95,6 +95,11 @@@@@@@@@ static inline pgdval_t native_pgd_val(p
                return pgd.pgd;
        }
        
++++++ +static inline pgdval_t pgd_flags(pgd_t pgd)
++++++ +{
++++++ +        return native_pgd_val(pgd) & PTE_FLAGS_MASK;
++++++ +}
++++++ +
        #if PAGETABLE_LEVELS >= 3
        #if PAGETABLE_LEVELS == 4
        typedef struct { pudval_t pud; } pud_t;
@@@@@@@@@ -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -122,11 -117,6 +122,11 @@@@@@@@@ static inline pudval_t native_pud_val(p
        }
        #endif  /* PAGETABLE_LEVELS == 4 */
        
++++++ +static inline pudval_t pud_flags(pud_t pud)
++++++ +{
++++++ +        return native_pud_val(pud) & PTE_FLAGS_MASK;
++++++ +}
++++++ +
        typedef struct { pmdval_t pmd; } pmd_t;
        
        static inline pmd_t native_make_pmd(pmdval_t val)
@@@@@@@@@ -128,6 -128,6 -128,6 -128,6 -128,6 -128,6 -138,7 -128,6 +138,7 @@@@@@@@@ static inline pmdval_t native_pmd_val(p
        {
                return pmd.pmd;
        }
++++++ +
        #else  /* PAGETABLE_LEVELS == 2 */
        #include <asm-generic/pgtable-nopmd.h>
        
@@@@@@@@@ -137,6 -137,6 -137,6 -137,6 -137,6 -137,6 -148,11 -137,6 +148,11 @@@@@@@@@ static inline pmdval_t native_pmd_val(p
        }
        #endif  /* PAGETABLE_LEVELS >= 3 */
        
++++++ +static inline pmdval_t pmd_flags(pmd_t pmd)
++++++ +{
++++++ +        return native_pmd_val(pmd) & PTE_FLAGS_MASK;
++++++ +}
++++++ +
        static inline pte_t native_make_pte(pteval_t val)
        {
                return (pte_t) { .pte = val };
@@@@@@@@@ -147,7 -147,7 -147,7 -147,7 -147,7 -147,7 -163,7 -147,7 +163,7 @@@@@@@@@ static inline pteval_t native_pte_val(p
                return pte.pte;
        }
        
 -------static inline pteval_t native_pte_flags(pte_t pte)
 +++++++static inline pteval_t pte_flags(pte_t pte)
        {
                return native_pte_val(pte) & PTE_FLAGS_MASK;
        }
        #endif
        
        #define pte_val(x)      native_pte_val(x)
 -------#define pte_flags(x)    native_pte_flags(x)
        #define __pte(x)        native_make_pte(x)
        
        #endif  /* CONFIG_PARAVIRT */
@@@@@@@@@ -1,6 -1,6 -1,6 -1,6 -1,6 -1,6 -1,8 -1,6 +1,8 @@@@@@@@@
        #ifndef _ASM_X86_PGTABLE_H
        #define _ASM_X86_PGTABLE_H
        
++++++ +#include <asm/page.h>
++++++ +
        #define FIRST_USER_ADDRESS      0
        
        #define _PAGE_BIT_PRESENT       0       /* is present */
        #define _PAGE_BIT_PCD           4       /* page cache disabled */
        #define _PAGE_BIT_ACCESSED      5       /* was accessed (raised by CPU) */
        #define _PAGE_BIT_DIRTY         6       /* was written to (raised by CPU) */
   -    #define _PAGE_BIT_FILE          6
        #define _PAGE_BIT_PSE           7       /* 4 MB (or 2MB) page */
        #define _PAGE_BIT_PAT           7       /* on 4KB pages */
        #define _PAGE_BIT_GLOBAL        8       /* Global TLB entry PPro+ */
        #define _PAGE_BIT_CPA_TEST      _PAGE_BIT_UNUSED1
        #define _PAGE_BIT_NX           63       /* No execute: only valid after cpuid check */
        
   +    /* If _PAGE_BIT_PRESENT is clear, we use these: */
   +    /* - if the user mapped it with PROT_NONE; pte_present gives true */
   +    #define _PAGE_BIT_PROTNONE      _PAGE_BIT_GLOBAL
   +    /* - set: nonlinear file mapping, saved PTE; unset:swap */
   +    #define _PAGE_BIT_FILE          _PAGE_BIT_DIRTY
   +    
        #define _PAGE_PRESENT   (_AT(pteval_t, 1) << _PAGE_BIT_PRESENT)
        #define _PAGE_RW        (_AT(pteval_t, 1) << _PAGE_BIT_RW)
        #define _PAGE_USER      (_AT(pteval_t, 1) << _PAGE_BIT_USER)
        #define _PAGE_NX        (_AT(pteval_t, 0))
        #endif
        
   -    /* If _PAGE_PRESENT is clear, we use these: */
   -    #define _PAGE_FILE      _PAGE_DIRTY     /* nonlinear file mapping,
   -                                             * saved PTE; unset:swap */
   -    #define _PAGE_PROTNONE  _PAGE_PSE       /* if the user mapped it with PROT_NONE;
   -                                               pte_present gives true */
   +    #define _PAGE_FILE      (_AT(pteval_t, 1) << _PAGE_BIT_FILE)
   +    #define _PAGE_PROTNONE  (_AT(pteval_t, 1) << _PAGE_BIT_PROTNONE)
        
        #define _PAGE_TABLE     (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER |        \
                                 _PAGE_ACCESSED | _PAGE_DIRTY)
        #define PGD_IDENT_ATTR   0x001          /* PRESENT (no other attributes) */
        #endif
        
   +    /*
   +     * Macro to mark a page protection value as UC-
   +     */
   +    #define pgprot_noncached(prot)                                  \
   +            ((boot_cpu_data.x86 > 3)                                \
   +             ? (__pgprot(pgprot_val(prot) | _PAGE_CACHE_UC_MINUS))  \
   +             : (prot))
   +    
        #ifndef __ASSEMBLY__
        
   +    #define pgprot_writecombine     pgprot_writecombine
   +    extern pgprot_t pgprot_writecombine(pgprot_t prot);
   +    
        /*
         * ZERO_PAGE is a global shared page that is always zero: used
         * for zero-mapped memory areas etc..
@@@@@@@@@ -236,110 -236,82 -236,82 -223,82 -236,82 -236,96 -238,82 -236,82 +238,110 @@@@@@@@@ static inline unsigned long pte_pfn(pte
        
        static inline int pmd_large(pmd_t pte)
        {
------ -        return (pmd_val(pte) & (_PAGE_PSE | _PAGE_PRESENT)) ==
++++++ +        return (pmd_flags(pte) & (_PAGE_PSE | _PAGE_PRESENT)) ==
                        (_PAGE_PSE | _PAGE_PRESENT);
        }
        
 +++++++static inline pte_t pte_set_flags(pte_t pte, pteval_t set)
 +++++++{
 +++++++        pteval_t v = native_pte_val(pte);
 +++++++
 +++++++        return native_make_pte(v | set);
 +++++++}
 +++++++
 +++++++static inline pte_t pte_clear_flags(pte_t pte, pteval_t clear)
 +++++++{
 +++++++        pteval_t v = native_pte_val(pte);
 +++++++
 +++++++        return native_make_pte(v & ~clear);
 +++++++}
 +++++++
        static inline pte_t pte_mkclean(pte_t pte)
        {
 -------        return __pte(pte_val(pte) & ~_PAGE_DIRTY);
 +++++++        return pte_clear_flags(pte, _PAGE_DIRTY);
        }
        
        static inline pte_t pte_mkold(pte_t pte)
        {
 -------        return __pte(pte_val(pte) & ~_PAGE_ACCESSED);
 +++++++        return pte_clear_flags(pte, _PAGE_ACCESSED);
        }
        
        static inline pte_t pte_wrprotect(pte_t pte)
        {
 -------        return __pte(pte_val(pte) & ~_PAGE_RW);
 +++++++        return pte_clear_flags(pte, _PAGE_RW);
        }
        
        static inline pte_t pte_mkexec(pte_t pte)
        {
 -------        return __pte(pte_val(pte) & ~_PAGE_NX);
 +++++++        return pte_clear_flags(pte, _PAGE_NX);
        }
        
        static inline pte_t pte_mkdirty(pte_t pte)
        {
 -------        return __pte(pte_val(pte) | _PAGE_DIRTY);
 +++++++        return pte_set_flags(pte, _PAGE_DIRTY);
        }
        
        static inline pte_t pte_mkyoung(pte_t pte)
        {
 -------        return __pte(pte_val(pte) | _PAGE_ACCESSED);
 +++++++        return pte_set_flags(pte, _PAGE_ACCESSED);
        }
        
        static inline pte_t pte_mkwrite(pte_t pte)
        {
 -------        return __pte(pte_val(pte) | _PAGE_RW);
 +++++++        return pte_set_flags(pte, _PAGE_RW);
        }
        
        static inline pte_t pte_mkhuge(pte_t pte)
        {
 -------        return __pte(pte_val(pte) | _PAGE_PSE);
 +++++++        return pte_set_flags(pte, _PAGE_PSE);
        }
        
        static inline pte_t pte_clrhuge(pte_t pte)
        {
 -------        return __pte(pte_val(pte) & ~_PAGE_PSE);
 +++++++        return pte_clear_flags(pte, _PAGE_PSE);
        }
        
        static inline pte_t pte_mkglobal(pte_t pte)
        {
 -------        return __pte(pte_val(pte) | _PAGE_GLOBAL);
 +++++++        return pte_set_flags(pte, _PAGE_GLOBAL);
        }
        
        static inline pte_t pte_clrglobal(pte_t pte)
        {
 -------        return __pte(pte_val(pte) & ~_PAGE_GLOBAL);
 +++++++        return pte_clear_flags(pte, _PAGE_GLOBAL);
        }
        
        static inline pte_t pte_mkspecial(pte_t pte)
        {
 -------        return __pte(pte_val(pte) | _PAGE_SPECIAL);
 +++++++        return pte_set_flags(pte, _PAGE_SPECIAL);
        }
        
        extern pteval_t __supported_pte_mask;
        
 ++++ ++/*
 ++++ ++ * Mask out unsupported bits in a present pgprot.  Non-present pgprots
 ++++ ++ * can use those bits for other purposes, so leave them be.
 ++++ ++ */
 ++++ ++static inline pgprotval_t massage_pgprot(pgprot_t pgprot)
 ++++ ++{
 ++++ ++        pgprotval_t protval = pgprot_val(pgprot);
 ++++ ++
 ++++ ++        if (protval & _PAGE_PRESENT)
 ++++ ++                protval &= __supported_pte_mask;
 ++++ ++
 ++++ ++        return protval;
 ++++ ++}
 ++++ ++
        static inline pte_t pfn_pte(unsigned long page_nr, pgprot_t pgprot)
        {
 ---- --        return __pte((((phys_addr_t)page_nr << PAGE_SHIFT) |
 ---- --                      pgprot_val(pgprot)) & __supported_pte_mask);
 ++++ ++        return __pte(((phys_addr_t)page_nr << PAGE_SHIFT) |
 ++++ ++                     massage_pgprot(pgprot));
        }
        
        static inline pmd_t pfn_pmd(unsigned long page_nr, pgprot_t pgprot)
        {
 ---- --        return __pmd((((phys_addr_t)page_nr << PAGE_SHIFT) |
 ---- --                      pgprot_val(pgprot)) & __supported_pte_mask);
 ++++ ++        return __pmd(((phys_addr_t)page_nr << PAGE_SHIFT) |
 ++++ ++                     massage_pgprot(pgprot));
        }
        
        static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
                 * the newprot (if present):
                 */
                val &= _PAGE_CHG_MASK;
 ---- --        val |= pgprot_val(newprot) & (~_PAGE_CHG_MASK) & __supported_pte_mask;
 ++++ ++        val |= massage_pgprot(newprot) & ~_PAGE_CHG_MASK;
        
                return __pte(val);
        }
@@@@@@@@@ -367,31 -339,31 -339,12 -326,9 -339,31 -353,31 -341,31 -339,31 +369,31 @@@@@@@@@ static inline pgprot_t pgprot_modify(pg
        
        #define pte_pgprot(x) __pgprot(pte_flags(x) & PTE_FLAGS_MASK)
        
 ---- --#define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask)
 ++++ ++#define canon_pgprot(p) __pgprot(massage_pgprot(p))
  ++    
  ++    static inline int is_new_memtype_allowed(unsigned long flags,
  ++                                                    unsigned long new_flags)
  ++    {
  ++            /*
  ++             * Certain new memtypes are not allowed with certain
  ++             * requested memtype:
  ++             * - request is uncached, return cannot be write-back
  ++             * - request is write-combine, return cannot be write-back
  ++             */
  ++            if ((flags == _PAGE_CACHE_UC_MINUS &&
  ++                 new_flags == _PAGE_CACHE_WB) ||
  ++                (flags == _PAGE_CACHE_WC &&
  ++                 new_flags == _PAGE_CACHE_WB)) {
  ++                    return 0;
  ++            }
  ++    
  ++            return 1;
  ++    }
        
        #ifndef __ASSEMBLY__
   +    /* Indicate that x86 has its own track and untrack pfn vma functions */
   +    #define __HAVE_PFNMAP_TRACKING
   +    
        #define __HAVE_PHYS_MEM_ACCESS_PROT
        struct file;
        pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
@@@@@@@@@ -465,6 -437,6 -418,6 -402,6 -437,6 -451,6 -439,190 -437,6 +467,190 @@@@@@@@@ static inline void __init paravirt_page
        # include "pgtable_64.h"
        #endif
        
++++++ +#ifndef __ASSEMBLY__
++++++ +#include <linux/mm_types.h>
++++++ +
++++++ +static inline int pte_none(pte_t pte)
++++++ +{
++++++ +        return !pte.pte;
++++++ +}
++++++ +
++++++ +#define __HAVE_ARCH_PTE_SAME
++++++ +static inline int pte_same(pte_t a, pte_t b)
++++++ +{
++++++ +        return a.pte == b.pte;
++++++ +}
++++++ +
++++++ +static inline int pte_present(pte_t a)
++++++ +{
++++++ +        return pte_flags(a) & (_PAGE_PRESENT | _PAGE_PROTNONE);
++++++ +}
++++++ +
++++++ +static inline int pmd_present(pmd_t pmd)
++++++ +{
++++++ +        return pmd_flags(pmd) & _PAGE_PRESENT;
++++++ +}
++++++ +
++++++ +static inline int pmd_none(pmd_t pmd)
++++++ +{
++++++ +        /* Only check low word on 32-bit platforms, since it might be
++++++ +           out of sync with upper half. */
++++++ +        return (unsigned long)native_pmd_val(pmd) == 0;
++++++ +}
++++++ +
++++++ +static inline unsigned long pmd_page_vaddr(pmd_t pmd)
++++++ +{
++++++ +        return (unsigned long)__va(pmd_val(pmd) & PTE_PFN_MASK);
++++++ +}
++++++ +
++++++ +/*
++++++ + * Currently stuck as a macro due to indirect forward reference to
++++++ + * linux/mmzone.h's __section_mem_map_addr() definition:
++++++ + */
++++++ +#define pmd_page(pmd)   pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT)
++++++ +
++++++ +/*
++++++ + * the pmd page can be thought of an array like this: pmd_t[PTRS_PER_PMD]
++++++ + *
++++++ + * this macro returns the index of the entry in the pmd page which would
++++++ + * control the given virtual address
++++++ + */
++++++ +static inline unsigned pmd_index(unsigned long address)
++++++ +{
++++++ +        return (address >> PMD_SHIFT) & (PTRS_PER_PMD - 1);
++++++ +}
++++++ +
++++++ +/*
++++++ + * Conversion functions: convert a page and protection to a page entry,
++++++ + * and a page entry and page directory to the page they refer to.
++++++ + *
++++++ + * (Currently stuck as a macro because of indirect forward reference
++++++ + * to linux/mm.h:page_to_nid())
++++++ + */
++++++ +#define mk_pte(page, pgprot)   pfn_pte(page_to_pfn(page), (pgprot))
++++++ +
++++++ +/*
++++++ + * the pte page can be thought of an array like this: pte_t[PTRS_PER_PTE]
++++++ + *
++++++ + * this function returns the index of the entry in the pte page which would
++++++ + * control the given virtual address
++++++ + */
++++++ +static inline unsigned pte_index(unsigned long address)
++++++ +{
++++++ +        return (address >> PAGE_SHIFT) & (PTRS_PER_PTE - 1);
++++++ +}
++++++ +
++++++ +static inline pte_t *pte_offset_kernel(pmd_t *pmd, unsigned long address)
++++++ +{
++++++ +        return (pte_t *)pmd_page_vaddr(*pmd) + pte_index(address);
++++++ +}
++++++ +
++++++ +static inline int pmd_bad(pmd_t pmd)
++++++ +{
++++++ +        return (pmd_flags(pmd) & ~_PAGE_USER) != _KERNPG_TABLE;
++++++ +}
++++++ +
++++++ +static inline unsigned long pages_to_mb(unsigned long npg)
++++++ +{
++++++ +        return npg >> (20 - PAGE_SHIFT);
++++++ +}
++++++ +
++++++ +#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \
++++++ +        remap_pfn_range(vma, vaddr, pfn, size, prot)
++++++ +
++++++ +#if PAGETABLE_LEVELS == 2
++++++ +static inline int pud_large(pud_t pud)
++++++ +{
++++++ +        return 0;
++++++ +}
++++++ +#endif
++++++ +
++++++ +#if PAGETABLE_LEVELS > 2
++++++ +static inline int pud_none(pud_t pud)
++++++ +{
++++++ +        return native_pud_val(pud) == 0;
++++++ +}
++++++ +
++++++ +static inline int pud_present(pud_t pud)
++++++ +{
++++++ +        return pud_flags(pud) & _PAGE_PRESENT;
++++++ +}
++++++ +
++++++ +static inline unsigned long pud_page_vaddr(pud_t pud)
++++++ +{
++++++ +        return (unsigned long)__va((unsigned long)pud_val(pud) & PTE_PFN_MASK);
++++++ +}
++++++ +
++++++ +/*
++++++ + * Currently stuck as a macro due to indirect forward reference to
++++++ + * linux/mmzone.h's __section_mem_map_addr() definition:
++++++ + */
++++++ +#define pud_page(pud)           pfn_to_page(pud_val(pud) >> PAGE_SHIFT)
++++++ +
++++++ +/* Find an entry in the second-level page table.. */
++++++ +static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address)
++++++ +{
++++++ +        return (pmd_t *)pud_page_vaddr(*pud) + pmd_index(address);
++++++ +}
++++++ +
++++++ +static inline unsigned long pmd_pfn(pmd_t pmd)
++++++ +{
++++++ +        return (pmd_val(pmd) & PTE_PFN_MASK) >> PAGE_SHIFT;
++++++ +}
++++++ +
++++++ +static inline int pud_large(pud_t pud)
++++++ +{
++++++ +        return (pud_flags(pud) & (_PAGE_PSE | _PAGE_PRESENT)) ==
++++++ +                (_PAGE_PSE | _PAGE_PRESENT);
++++++ +}
++++++ +
++++++ +static inline int pud_bad(pud_t pud)
++++++ +{
++++++ +        return (pud_flags(pud) & ~(_KERNPG_TABLE | _PAGE_USER)) != 0;
++++++ +}
++++++ +#endif  /* PAGETABLE_LEVELS > 2 */
++++++ +
++++++ +#if PAGETABLE_LEVELS > 3
++++++ +static inline int pgd_present(pgd_t pgd)
++++++ +{
++++++ +        return pgd_flags(pgd) & _PAGE_PRESENT;
++++++ +}
++++++ +
++++++ +static inline unsigned long pgd_page_vaddr(pgd_t pgd)
++++++ +{
++++++ +        return (unsigned long)__va((unsigned long)pgd_val(pgd) & PTE_PFN_MASK);
++++++ +}
++++++ +
++++++ +/*
++++++ + * Currently stuck as a macro due to indirect forward reference to
++++++ + * linux/mmzone.h's __section_mem_map_addr() definition:
++++++ + */
++++++ +#define pgd_page(pgd)           pfn_to_page(pgd_val(pgd) >> PAGE_SHIFT)
++++++ +
++++++ +/* to find an entry in a page-table-directory. */
++++++ +static inline unsigned pud_index(unsigned long address)
++++++ +{
++++++ +        return (address >> PUD_SHIFT) & (PTRS_PER_PUD - 1);
++++++ +}
++++++ +
++++++ +static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address)
++++++ +{
++++++ +        return (pud_t *)pgd_page_vaddr(*pgd) + pud_index(address);
++++++ +}
++++++ +
++++++ +static inline int pgd_bad(pgd_t pgd)
++++++ +{
++++++ +        return (pgd_flags(pgd) & ~_PAGE_USER) != _KERNPG_TABLE;
++++++ +}
++++++ +
++++++ +static inline int pgd_none(pgd_t pgd)
++++++ +{
++++++ +        return !native_pgd_val(pgd);
++++++ +}
++++++ +#endif  /* PAGETABLE_LEVELS > 3 */
++++++ +
++++++ +#endif  /* __ASSEMBLY__ */
++++++ +
        /*
         * the pgd page can be thought of an array like this: pgd_t[PTRS_PER_PGD]
         *
        #include <asm/processor.h>
        #include <linux/bitops.h>
        #include <linux/threads.h>
 -------#include <asm/pda.h>
        
        extern pud_t level3_kernel_pgt[512];
        extern pud_t level3_ident_pgt[512];
@@@@@@@@@ -66,9 -67,9 -67,9 -67,9 -67,9 -67,9 -67,6 -67,9 +66,6 @@@@@@@@@ extern void paging_init(void)
                printk("%s:%d: bad pgd %p(%016lx).\n",          \
                       __FILE__, __LINE__, &(e), pgd_val(e))
        
------ -#define pgd_none(x)     (!pgd_val(x))
------ -#define pud_none(x)     (!pud_val(x))
------ -
        struct mm_struct;
        
        void set_pte_vaddr_pud(pud_t *pud_page, unsigned long vaddr, pte_t new_pte);
@@@@@@@@@ -133,8 -134,8 -134,8 -134,8 -134,8 -134,8 -131,6 -134,8 +130,6 @@@@@@@@@ static inline void native_pgd_clear(pgd
                native_set_pgd(pgd, native_make_pgd(0));
        }
        
------ -#define pte_same(a, b)          ((a).pte == (b).pte)
------ -
        #endif /* !__ASSEMBLY__ */
        
        #define PMD_SIZE        (_AC(1, UL) << PMD_SHIFT)
        #define PGDIR_MASK      (~(PGDIR_SIZE - 1))
        
        
   -    #define MAXMEM           _AC(0x00003fffffffffff, UL)
   +    #define MAXMEM           _AC(__AC(1, UL) << MAX_PHYSMEM_BITS, UL)
        #define VMALLOC_START    _AC(0xffffc20000000000, UL)
        #define VMALLOC_END      _AC(0xffffe1ffffffffff, UL)
        #define VMEMMAP_START    _AC(0xffffe20000000000, UL)
        
        #ifndef __ASSEMBLY__
        
------ -static inline int pgd_bad(pgd_t pgd)
------ -{
------ -        return (pgd_val(pgd) & ~(PTE_PFN_MASK | _PAGE_USER)) != _KERNPG_TABLE;
------ -}
------ -
------ -static inline int pud_bad(pud_t pud)
------ -{
------ -        return (pud_val(pud) & ~(PTE_PFN_MASK | _PAGE_USER)) != _KERNPG_TABLE;
------ -}
------ -
------ -static inline int pmd_bad(pmd_t pmd)
------ -{
------ -        return (pmd_val(pmd) & ~(PTE_PFN_MASK | _PAGE_USER)) != _KERNPG_TABLE;
------ -}
------ -
------ -#define pte_none(x)     (!pte_val((x)))
------ -#define pte_present(x)  (pte_val((x)) & (_PAGE_PRESENT | _PAGE_PROTNONE))
------ -
------ -#define pages_to_mb(x)  ((x) >> (20 - PAGE_SHIFT))   /* FIXME: is this right? */
   -    
   -    /*
   -     * Macro to mark a page protection value as "uncacheable".
   -     */
   -    #define pgprot_noncached(prot)                                  \
   -            (__pgprot(pgprot_val((prot)) | _PAGE_PCD | _PAGE_PWT))
------ -
        /*
         * Conversion functions: convert a page and protection to a page entry,
         * and a page entry and page directory to the page they refer to.
        /*
         * Level 4 access.
         */
------ -#define pgd_page_vaddr(pgd)                                             \
------ -        ((unsigned long)__va((unsigned long)pgd_val((pgd)) & PTE_PFN_MASK))
------ -#define pgd_page(pgd)           (pfn_to_page(pgd_val((pgd)) >> PAGE_SHIFT))
------ -#define pgd_present(pgd) (pgd_val(pgd) & _PAGE_PRESENT)
        static inline int pgd_large(pgd_t pgd) { return 0; }
        #define mk_kernel_pgd(address) __pgd((address) | _KERNPG_TABLE)
        
        /* PUD - Level3 access */
------ -/* to find an entry in a page-table-directory. */
------ -#define pud_page_vaddr(pud)                                             \
------ -        ((unsigned long)__va(pud_val((pud)) & PHYSICAL_PAGE_MASK))
------ -#define pud_page(pud)   (pfn_to_page(pud_val((pud)) >> PAGE_SHIFT))
------ -#define pud_index(address) (((address) >> PUD_SHIFT) & (PTRS_PER_PUD - 1))
------ -#define pud_offset(pgd, address)                                        \
------ -        ((pud_t *)pgd_page_vaddr(*(pgd)) + pud_index((address)))
------ -#define pud_present(pud) (pud_val((pud)) & _PAGE_PRESENT)
------ -
------ -static inline int pud_large(pud_t pte)
------ -{
------ -        return (pud_val(pte) & (_PAGE_PSE | _PAGE_PRESENT)) ==
------ -                (_PAGE_PSE | _PAGE_PRESENT);
------ -}
        
        /* PMD  - Level 2 access */
------ -#define pmd_page_vaddr(pmd) ((unsigned long) __va(pmd_val((pmd)) & PTE_PFN_MASK))
------ -#define pmd_page(pmd)           (pfn_to_page(pmd_val((pmd)) >> PAGE_SHIFT))
------ -
------ -#define pmd_index(address) (((address) >> PMD_SHIFT) & (PTRS_PER_PMD - 1))
------ -#define pmd_offset(dir, address) ((pmd_t *)pud_page_vaddr(*(dir)) + \
------ -                                  pmd_index(address))
------ -#define pmd_none(x)     (!pmd_val((x)))
------ -#define pmd_present(x)  (pmd_val((x)) & _PAGE_PRESENT)
------ -#define pfn_pmd(nr, prot) (__pmd(((nr) << PAGE_SHIFT) | pgprot_val((prot))))
------ -#define pmd_pfn(x)  ((pmd_val((x)) & __PHYSICAL_MASK) >> PAGE_SHIFT)
------ -
        #define pte_to_pgoff(pte) ((pte_val((pte)) & PHYSICAL_PAGE_MASK) >> PAGE_SHIFT)
        #define pgoff_to_pte(off) ((pte_t) { .pte = ((off) << PAGE_SHIFT) |     \
                                                    _PAGE_FILE })
        
        /* PTE - Level 1 access. */
        
------ -/* page, protection -> pte */
------ -#define mk_pte(page, pgprot)    pfn_pte(page_to_pfn((page)), (pgprot))
------ -
------ -#define pte_index(address) (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
------ -#define pte_offset_kernel(dir, address) ((pte_t *) pmd_page_vaddr(*(dir)) + \
------ -                                         pte_index((address)))
------ -
        /* x86-64 always has all page tables mapped. */
        #define pte_offset_map(dir, address) pte_offset_kernel((dir), (address))
        #define pte_offset_map_nested(dir, address) pte_offset_kernel((dir), (address))
        extern int direct_gbpages;
        
        /* Encode and de-code a swap entry */
   -    #define __swp_type(x)                   (((x).val >> 1) & 0x3f)
   -    #define __swp_offset(x)                 ((x).val >> 8)
   -    #define __swp_entry(type, offset)       ((swp_entry_t) { ((type) << 1) | \
   -                                                             ((offset) << 8) })
   +    #if _PAGE_BIT_FILE < _PAGE_BIT_PROTNONE
   +    #define SWP_TYPE_BITS (_PAGE_BIT_FILE - _PAGE_BIT_PRESENT - 1)
   +    #define SWP_OFFSET_SHIFT (_PAGE_BIT_PROTNONE + 1)
   +    #else
   +    #define SWP_TYPE_BITS (_PAGE_BIT_PROTNONE - _PAGE_BIT_PRESENT - 1)
   +    #define SWP_OFFSET_SHIFT (_PAGE_BIT_FILE + 1)
   +    #endif
   +    
   +    #define MAX_SWAPFILES_CHECK() BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > SWP_TYPE_BITS)
   +    
   +    #define __swp_type(x)                   (((x).val >> (_PAGE_BIT_PRESENT + 1)) \
   +                                             & ((1U << SWP_TYPE_BITS) - 1))
   +    #define __swp_offset(x)                 ((x).val >> SWP_OFFSET_SHIFT)
   +    #define __swp_entry(type, offset)       ((swp_entry_t) { \
   +                                             ((type) << (_PAGE_BIT_PRESENT + 1)) \
   +                                             | ((offset) << SWP_OFFSET_SHIFT) })
        #define __pte_to_swp_entry(pte)         ((swp_entry_t) { pte_val((pte)) })
        #define __swp_entry_to_pte(x)           ((pte_t) { .pte = (x).val })
        
        extern int kern_addr_valid(unsigned long addr);
        extern void cleanup_highmap(void);
        
------ -#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \
------ -        remap_pfn_range(vma, vaddr, pfn, size, prot)
------ -
        #define HAVE_ARCH_UNMAPPED_AREA
        #define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
        
        #include <asm/mpspec.h>
        #include <asm/smp.h>
        
 -------#ifdef CONFIG_X86_LOCAL_APIC
 -------# include <mach_apic.h>
 -------#endif
 -------
        static int __initdata acpi_force = 0;
   -    
   +    u32 acpi_rsdt_forced;
        #ifdef  CONFIG_ACPI
        int acpi_disabled = 0;
        #else
@@@@@@@@@ -52,7 -56,16 -56,16 -56,16 -56,16 -56,16 -56,16 -56,16 +52,7 @@@@@@@@@ int acpi_disabled = 1
        EXPORT_SYMBOL(acpi_disabled);
        
        #ifdef  CONFIG_X86_64
 -------
 -------#include <asm/proto.h>
 -------
 -------#else                           /* X86 */
 -------
 -------#ifdef  CONFIG_X86_LOCAL_APIC
 -------#include <mach_apic.h>
 -------#include <mach_mpparse.h>
 -------#endif                          /* CONFIG_X86_LOCAL_APIC */
 -------
 +++++++# include <asm/proto.h>
        #endif                          /* X86 */
        
        #define BAD_MADT_ENTRY(entry, end) (                                        \
@@@@@@@@@ -108,35 -121,18 -121,35 -121,35 -121,35 -121,35 -121,35 -121,35 +108,18 @@@@@@@@@ enum acpi_irq_model_id acpi_irq_model 
         */
        char *__init __acpi_map_table(unsigned long phys, unsigned long size)
        {
- ------        unsigned long base, offset, mapped_size;
- ------        int idx;
        
                if (!phys || !size)
                        return NULL;
        
- ------        if (phys+size <= (max_low_pfn_mapped << PAGE_SHIFT))
- ------                return __va(phys);
- ------
- ------        offset = phys & (PAGE_SIZE - 1);
- ------        mapped_size = PAGE_SIZE - offset;
- ------        clear_fixmap(FIX_ACPI_END);
- ------        set_fixmap(FIX_ACPI_END, phys);
- ------        base = fix_to_virt(FIX_ACPI_END);
- ------
- ------        /*
- ------         * Most cases can be covered by the below.
- ------         */
- ------        idx = FIX_ACPI_END;
- ------        while (mapped_size < size) {
- ------                if (--idx < FIX_ACPI_BEGIN)
- ------                        return NULL;    /* cannot handle this */
- ------                phys += PAGE_SIZE;
- ------                clear_fixmap(idx);
- ------                set_fixmap(idx, phys);
- ------                mapped_size += PAGE_SIZE;
- ------        }
-       
-               return ((unsigned char *)base + offset);
+ ++++++        return early_ioremap(phys, size);
+ ++++++}
+ ++++++void __init __acpi_unmap_table(char *map, unsigned long size)
+ ++++++{
+ ++++++        if (!map || !size)
+ ++++++                return;
+       
  ------        return ((unsigned char *)base + offset);
+ ++++++        early_iounmap(map, size);
        }
        
        #ifdef CONFIG_PCI_MMCONFIG
@@@@@@@@@ -226,8 -222,7 -239,7 -239,7 -239,7 -239,7 -239,7 -239,7 +209,8 @@@@@@@@@ static int __init acpi_parse_madt(struc
                               madt->address);
                }
        
 -------        acpi_madt_oem_check(madt->header.oem_id, madt->header.oem_table_id);
 +++++++        default_acpi_madt_oem_check(madt->header.oem_id,
 +++++++                                    madt->header.oem_table_id);
        
                return 0;
        }
@@@@@@@@@ -526,10 -521,10 -538,10 -538,9 -538,10 -538,10 -538,10 -538,10 +509,10 @@@@@@@@@ static int __cpuinit _acpi_map_lsapic(a
                struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
                union acpi_object *obj;
                struct acpi_madt_local_apic *lapic;
   -            cpumask_t tmp_map, new_map;
   +            cpumask_var_t tmp_map, new_map;
                u8 physid;
                int cpu;
   +            int retval = -ENOMEM;
        
                if (ACPI_FAILURE(acpi_evaluate_object(handle, "_MAT", NULL, &buffer)))
                        return -EINVAL;
                buffer.length = ACPI_ALLOCATE_BUFFER;
                buffer.pointer = NULL;
        
   -            tmp_map = cpu_present_map;
   +            if (!alloc_cpumask_var(&tmp_map, GFP_KERNEL))
   +                    goto out;
   +    
   +            if (!alloc_cpumask_var(&new_map, GFP_KERNEL))
   +                    goto free_tmp_map;
   +    
   +            cpumask_copy(tmp_map, cpu_present_mask);
                acpi_register_lapic(physid, lapic->lapic_flags & ACPI_MADT_ENABLED);
        
                /*
                 * If mp_register_lapic successfully generates a new logical cpu
                 * number, then the following will get us exactly what was mapped
                 */
   -            cpus_andnot(new_map, cpu_present_map, tmp_map);
   -            if (cpus_empty(new_map)) {
   +            cpumask_andnot(new_map, cpu_present_mask, tmp_map);
   +            if (cpumask_empty(new_map)) {
                        printk ("Unable to map lapic to logical cpu number\n");
   -                    return -EINVAL;
   +                    retval = -EINVAL;
   +                    goto free_new_map;
                }
        
   -            cpu = first_cpu(new_map);
   +            cpu = cpumask_first(new_map);
        
                *pcpu = cpu;
   -            return 0;
   +            retval = 0;
   +    
   +    free_new_map:
   +            free_cpumask_var(new_map);
   +    free_tmp_map:
   +            free_cpumask_var(tmp_map);
   +    out:
   +            return retval;
        }
        
        /* wrapper to silence section mismatch warning */
@@@@@@@@@ -601,7 -596,7 -613,7 -598,7 -613,7 -613,7 -613,7 -613,7 +584,7 @@@@@@@@@ EXPORT_SYMBOL(acpi_map_lsapic)
        int acpi_unmap_lsapic(int cpu)
        {
                per_cpu(x86_cpu_to_apicid, cpu) = -1;
   -            cpu_clear(cpu, cpu_present_map);
   +            set_cpu_present(cpu, false);
                num_processors--;
        
                return (0);
@@@@@@@@@ -872,7 -867,7 -884,7 -869,7 -884,7 -884,7 -884,7 -884,7 +855,7 @@@@@@@@@ static struct 
                DECLARE_BITMAP(pin_programmed, MP_MAX_IOAPIC_PIN + 1);
        } mp_ioapic_routing[MAX_IO_APICS];
        
 -------static int mp_find_ioapic(int gsi)
 +++++++int mp_find_ioapic(int gsi)
        {
                int i = 0;
        
                return -1;
        }
        
 +++++++int mp_find_ioapic_pin(int ioapic, int gsi)
 +++++++{
 +++++++        if (WARN_ON(ioapic == -1))
 +++++++                return -1;
 +++++++        if (WARN_ON(gsi > mp_ioapic_routing[ioapic].gsi_end))
 +++++++                return -1;
 +++++++
 +++++++        return gsi - mp_ioapic_routing[ioapic].gsi_base;
 +++++++}
 +++++++
        static u8 __init uniq_ioapic_id(u8 id)
        {
        #ifdef CONFIG_X86_32
                DECLARE_BITMAP(used, 256);
                bitmap_zero(used, 256);
                for (i = 0; i < nr_ioapics; i++) {
 -------                struct mp_config_ioapic *ia = &mp_ioapics[i];
 -------                __set_bit(ia->mp_apicid, used);
 +++++++                struct mpc_ioapic *ia = &mp_ioapics[i];
 +++++++                __set_bit(ia->apicid, used);
                }
                if (!test_bit(id, used))
                        return id;
@@@@@@@@@ -943,70 -928,47 -945,47 -930,47 -945,47 -945,70 -945,47 -945,47 +926,70 @@@@@@@@@ void __init mp_register_ioapic(int id, 
        
                idx = nr_ioapics;
        
 -------        mp_ioapics[idx].mp_type = MP_IOAPIC;
 -------        mp_ioapics[idx].mp_flags = MPC_APIC_USABLE;
 -------        mp_ioapics[idx].mp_apicaddr = address;
 +++++++        mp_ioapics[idx].type = MP_IOAPIC;
 +++++++        mp_ioapics[idx].flags = MPC_APIC_USABLE;
 +++++++        mp_ioapics[idx].apicaddr = address;
        
                set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address);
 -------        mp_ioapics[idx].mp_apicid = uniq_ioapic_id(id);
 +++++++        mp_ioapics[idx].apicid = uniq_ioapic_id(id);
        #ifdef CONFIG_X86_32
 -------        mp_ioapics[idx].mp_apicver = io_apic_get_version(idx);
 +++++++        mp_ioapics[idx].apicver = io_apic_get_version(idx);
        #else
 -------        mp_ioapics[idx].mp_apicver = 0;
 +++++++        mp_ioapics[idx].apicver = 0;
        #endif
                /*
                 * Build basic GSI lookup table to facilitate gsi->io_apic lookups
                 * and to prevent reprogramming of IOAPIC pins (PCI GSIs).
                 */
 -------        mp_ioapic_routing[idx].apic_id = mp_ioapics[idx].mp_apicid;
 +++++++        mp_ioapic_routing[idx].apic_id = mp_ioapics[idx].apicid;
                mp_ioapic_routing[idx].gsi_base = gsi_base;
                mp_ioapic_routing[idx].gsi_end = gsi_base +
                    io_apic_get_redir_entries(idx);
        
 -------        printk(KERN_INFO "IOAPIC[%d]: apic_id %d, version %d, address 0x%lx, "
 -------               "GSI %d-%d\n", idx, mp_ioapics[idx].mp_apicid,
 -------               mp_ioapics[idx].mp_apicver, mp_ioapics[idx].mp_apicaddr,
 +++++++        printk(KERN_INFO "IOAPIC[%d]: apic_id %d, version %d, address 0x%x, "
 +++++++               "GSI %d-%d\n", idx, mp_ioapics[idx].apicid,
 +++++++               mp_ioapics[idx].apicver, mp_ioapics[idx].apicaddr,
                       mp_ioapic_routing[idx].gsi_base, mp_ioapic_routing[idx].gsi_end);
        
                nr_ioapics++;
        }
        
 ---- --static void assign_to_mp_irq(struct mp_config_intsrc *m,
 ---- --                                    struct mp_config_intsrc *mp_irq)
 ++++ ++int __init acpi_probe_gsi(void)
        {
 ---- --        memcpy(mp_irq, m, sizeof(struct mp_config_intsrc));
 ++++ ++        int idx;
 ++++ ++        int gsi;
 ++++ ++        int max_gsi = 0;
 ++++ ++
 ++++ ++        if (acpi_disabled)
 ++++ ++                return 0;
 ++++ ++
 ++++ ++        if (!acpi_ioapic)
 ++++ ++                return 0;
 ++++ ++
 ++++ ++        max_gsi = 0;
 ++++ ++        for (idx = 0; idx < nr_ioapics; idx++) {
 ++++ ++                gsi = mp_ioapic_routing[idx].gsi_end;
 ++++ ++
 ++++ ++                if (gsi > max_gsi)
 ++++ ++                        max_gsi = gsi;
 ++++ ++        }
 ++++ ++
 ++++ ++        return max_gsi + 1;
        }
        
 ---- --static int mp_irq_cmp(struct mp_config_intsrc *mp_irq,
 ---- --                                struct mp_config_intsrc *m)
     -  static void assign_to_mp_irq(struct mp_config_intsrc *m,
     -                                      struct mp_config_intsrc *mp_irq)
 +++++++static void assign_to_mp_irq(struct mpc_intsrc *m,
 +++++++                                    struct mpc_intsrc *mp_irq)
        {
 ---- --        return memcmp(mp_irq, m, sizeof(struct mp_config_intsrc));
     -          memcpy(mp_irq, m, sizeof(struct mp_config_intsrc));
 +++++++        memcpy(mp_irq, m, sizeof(struct mpc_intsrc));
        }
        
 ---- --static void save_mp_irq(struct mp_config_intsrc *m)
     -  static int mp_irq_cmp(struct mp_config_intsrc *mp_irq,
     -                                  struct mp_config_intsrc *m)
 +++++++static int mp_irq_cmp(struct mpc_intsrc *mp_irq,
 +++++++                                struct mpc_intsrc *m)
 ++++ ++{
     -          return memcmp(mp_irq, m, sizeof(struct mp_config_intsrc));
 +++++++        return memcmp(mp_irq, m, sizeof(struct mpc_intsrc));
 ++++ ++}
 ++++ ++
     -  static void save_mp_irq(struct mp_config_intsrc *m)
 +++++++static void save_mp_irq(struct mpc_intsrc *m)
        {
                int i;
        
@@@@@@@@@ -1024,7 -986,7 -1003,7 -988,7 -1003,7 -1026,7 -1003,7 -1003,7 +1007,7 @@@@@@@@@ void __init mp_override_legacy_irq(u8 b
        {
                int ioapic;
                int pin;
 -------        struct mp_config_intsrc mp_irq;
 +++++++        struct mpc_intsrc mp_irq;
        
                /*
                 * Convert 'gsi' to 'ioapic.pin'.
                ioapic = mp_find_ioapic(gsi);
                if (ioapic < 0)
                        return;
 -------        pin = gsi - mp_ioapic_routing[ioapic].gsi_base;
 +++++++        pin = mp_find_ioapic_pin(ioapic, gsi);
        
                /*
                 * TBD: This check is for faulty timer entries, where the override
                if ((bus_irq == 0) && (trigger == 3))
                        trigger = 1;
        
 -------        mp_irq.mp_type = MP_INTSRC;
 -------        mp_irq.mp_irqtype = mp_INT;
 -------        mp_irq.mp_irqflag = (trigger << 2) | polarity;
 -------        mp_irq.mp_srcbus = MP_ISA_BUS;
 -------        mp_irq.mp_srcbusirq = bus_irq;  /* IRQ */
 -------        mp_irq.mp_dstapic = mp_ioapics[ioapic].mp_apicid; /* APIC ID */
 -------        mp_irq.mp_dstirq = pin; /* INTIN# */
 +++++++        mp_irq.type = MP_INTSRC;
 +++++++        mp_irq.irqtype = mp_INT;
 +++++++        mp_irq.irqflag = (trigger << 2) | polarity;
 +++++++        mp_irq.srcbus = MP_ISA_BUS;
 +++++++        mp_irq.srcbusirq = bus_irq;     /* IRQ */
 +++++++        mp_irq.dstapic = mp_ioapics[ioapic].apicid; /* APIC ID */
 +++++++        mp_irq.dstirq = pin;    /* INTIN# */
        
                save_mp_irq(&mp_irq);
        }
@@@@@@@@@ -1058,7 -1020,7 -1037,7 -1022,7 -1037,7 -1060,7 -1037,7 -1037,7 +1041,7 @@@@@@@@@ void __init mp_config_acpi_legacy_irqs(
                int i;
                int ioapic;
                unsigned int dstapic;
 -------        struct mp_config_intsrc mp_irq;
 +++++++        struct mpc_intsrc mp_irq;
        
        #if defined (CONFIG_MCA) || defined (CONFIG_EISA)
                /*
                ioapic = mp_find_ioapic(0);
                if (ioapic < 0)
                        return;
 -------        dstapic = mp_ioapics[ioapic].mp_apicid;
 +++++++        dstapic = mp_ioapics[ioapic].apicid;
        
                /*
                 * Use the default configuration for the IRQs 0-15.  Unless
                        int idx;
        
                        for (idx = 0; idx < mp_irq_entries; idx++) {
 -------                        struct mp_config_intsrc *irq = mp_irqs + idx;
 +++++++                        struct mpc_intsrc *irq = mp_irqs + idx;
        
                                /* Do we already have a mapping for this ISA IRQ? */
 -------                        if (irq->mp_srcbus == MP_ISA_BUS
 -------                            && irq->mp_srcbusirq == i)
 +++++++                        if (irq->srcbus == MP_ISA_BUS && irq->srcbusirq == i)
                                        break;
        
                                /* Do we already have a mapping for this IOAPIC pin */
 -------                        if (irq->mp_dstapic == dstapic &&
 -------                            irq->mp_dstirq == i)
 +++++++                        if (irq->dstapic == dstapic && irq->dstirq == i)
                                        break;
                        }
        
                                continue;       /* IRQ already used */
                        }
        
 -------                mp_irq.mp_type = MP_INTSRC;
 -------                mp_irq.mp_irqflag = 0;  /* Conforming */
 -------                mp_irq.mp_srcbus = MP_ISA_BUS;
 -------                mp_irq.mp_dstapic = dstapic;
 -------                mp_irq.mp_irqtype = mp_INT;
 -------                mp_irq.mp_srcbusirq = i; /* Identity mapped */
 -------                mp_irq.mp_dstirq = i;
 +++++++                mp_irq.type = MP_INTSRC;
 +++++++                mp_irq.irqflag = 0;     /* Conforming */
 +++++++                mp_irq.srcbus = MP_ISA_BUS;
 +++++++                mp_irq.dstapic = dstapic;
 +++++++                mp_irq.irqtype = mp_INT;
 +++++++                mp_irq.srcbusirq = i; /* Identity mapped */
 +++++++                mp_irq.dstirq = i;
        
                        save_mp_irq(&mp_irq);
                }
@@@@@@@@@ -1152,7 -1116,7 -1133,7 -1118,7 -1133,7 -1156,7 -1133,7 -1133,7 +1135,7 @@@@@@@@@ int mp_register_gsi(u32 gsi, int trigge
                        return gsi;
                }
        
 -------        ioapic_pin = gsi - mp_ioapic_routing[ioapic].gsi_base;
 +++++++        ioapic_pin = mp_find_ioapic_pin(ioapic, gsi);
        
        #ifdef CONFIG_X86_32
                if (ioapic_renumber_irq)
@@@@@@@@@ -1226,22 -1190,22 -1207,22 -1192,22 -1207,22 -1230,22 -1207,22 -1207,22 +1209,22 @@@@@@@@@ int mp_config_acpi_gsi(unsigned char nu
                                u32 gsi, int triggering, int polarity)
        {
        #ifdef CONFIG_X86_MPPARSE
 -------        struct mp_config_intsrc mp_irq;
 +++++++        struct mpc_intsrc mp_irq;
                int ioapic;
        
                if (!acpi_ioapic)
                        return 0;
        
                /* print the entry should happen on mptable identically */
 -------        mp_irq.mp_type = MP_INTSRC;
 -------        mp_irq.mp_irqtype = mp_INT;
 -------        mp_irq.mp_irqflag = (triggering == ACPI_EDGE_SENSITIVE ? 4 : 0x0c) |
 +++++++        mp_irq.type = MP_INTSRC;
 +++++++        mp_irq.irqtype = mp_INT;
 +++++++        mp_irq.irqflag = (triggering == ACPI_EDGE_SENSITIVE ? 4 : 0x0c) |
                                        (polarity == ACPI_ACTIVE_HIGH ? 1 : 3);
 -------        mp_irq.mp_srcbus = number;
 -------        mp_irq.mp_srcbusirq = (((devfn >> 3) & 0x1f) << 2) | ((pin - 1) & 3);
 +++++++        mp_irq.srcbus = number;
 +++++++        mp_irq.srcbusirq = (((devfn >> 3) & 0x1f) << 2) | ((pin - 1) & 3);
                ioapic = mp_find_ioapic(gsi);
 -------        mp_irq.mp_dstapic = mp_ioapic_routing[ioapic].apic_id;
 -------        mp_irq.mp_dstirq = gsi - mp_ioapic_routing[ioapic].gsi_base;
 +++++++        mp_irq.dstapic = mp_ioapic_routing[ioapic].apic_id;
 +++++++        mp_irq.dstirq = mp_find_ioapic_pin(ioapic, gsi);
        
                save_mp_irq(&mp_irq);
        #endif
@@@@@@@@@ -1368,7 -1332,7 -1349,7 -1334,7 -1349,7 -1372,7 -1349,7 -1349,7 +1351,7 @@@@@@@@@ static void __init acpi_process_madt(vo
                        if (!error) {
                                acpi_lapic = 1;
        
 -------#ifdef CONFIG_X86_GENERICARCH
 +++++++#ifdef CONFIG_X86_BIGSMP
                                generic_bigsmp_probe();
        #endif
                                /*
                                error = acpi_parse_madt_ioapic_entries();
                                if (!error) {
                                        acpi_irq_model = ACPI_IRQ_MODEL_IOAPIC;
   -                                    acpi_irq_balance_set(NULL);
                                        acpi_ioapic = 1;
        
                                        smp_found_config = 1;
 -------#ifdef CONFIG_X86_32
 -------                                setup_apic_routing();
 -------#endif
 +++++++                                if (apic->setup_apic_routing)
 +++++++                                        apic->setup_apic_routing();
                                }
                        }
                        if (error == -EINVAL) {
                                       "Invalid BIOS MADT, disabling ACPI\n");
                                disable_acpi();
                        }
   +            } else {
   +                    /*
   +                     * ACPI found no MADT, and so ACPI wants UP PIC mode.
   +                     * In the event an MPS table was found, forget it.
   +                     * Boot with "acpi=off" to use MPS on such a system.
   +                     */
   +                    if (smp_found_config) {
   +                            printk(KERN_WARNING PREFIX
   +                                    "No APIC-table, disabling MPS\n");
   +                            smp_found_config = 0;
   +                    }
                }
   +    
   +            /*
   +             * ACPI supports both logical (e.g. Hyper-Threading) and physical
   +             * processors, where MPS only supports physical.
   +             */
   +            if (acpi_lapic && acpi_ioapic)
   +                    printk(KERN_INFO "Using ACPI (MADT) for SMP configuration "
   +                           "information\n");
   +            else if (acpi_lapic)
   +                    printk(KERN_INFO "Using ACPI for processor (LAPIC) "
   +                           "configuration information\n");
        #endif
                return;
        }
@@@@@@@@@ -1838,10 -1803,10 -1820,10 -1784,6 -1820,10 -1843,10 -1820,10 -1820,10 +1821,10 @@@@@@@@@ static int __init parse_acpi(char *arg
                                disable_acpi();
                        acpi_ht = 1;
                }
   +            /* acpi=rsdt use RSDT instead of XSDT */
   +            else if (strcmp(arg, "rsdt") == 0) {
   +                    acpi_rsdt_forced = 1;
   +            }
                /* "acpi=noirq" disables ACPI interrupt routing */
                else if (strcmp(arg, "noirq") == 0) {
                        acpi_noirq_set();
diff --combined arch/x86/kernel/apic.c
@@@@@@@@@ -1,7 -1,7 -1,7 -1,7 -1,7 -1,7 -1,7 -1,7 +1,7 @@@@@@@@@
        /*
         *      Local APIC handling, local APIC timers
         *
 ------- *      (c) 1999, 2000 Ingo Molnar <mingo@redhat.com>
 +++++++ *      (c) 1999, 2000, 2009 Ingo Molnar <mingo@redhat.com>
         *
         *      Fixes
         *      Maciej W. Rozycki       :       Bits for genuine 82489DX APICs;
         *      Mikael Pettersson       :       PM converted to driver model.
         */
        
 -------#include <linux/init.h>
 -------
 -------#include <linux/mm.h>
 -------#include <linux/delay.h>
 -------#include <linux/bootmem.h>
 -------#include <linux/interrupt.h>
 -------#include <linux/mc146818rtc.h>
        #include <linux/kernel_stat.h>
 -------#include <linux/sysdev.h>
 -------#include <linux/ioport.h>
 -------#include <linux/cpu.h>
 -------#include <linux/clockchips.h>
 +++++++#include <linux/mc146818rtc.h>
        #include <linux/acpi_pmtmr.h>
 +++++++#include <linux/clockchips.h>
 +++++++#include <linux/interrupt.h>
 +++++++#include <linux/bootmem.h>
 +++++++#include <linux/ftrace.h>
 +++++++#include <linux/ioport.h>
        #include <linux/module.h>
 -------#include <linux/dmi.h>
 +++++++#include <linux/sysdev.h>
 +++++++#include <linux/delay.h>
 +++++++#include <linux/timex.h>
        #include <linux/dmar.h>
 -- ----#include <linux/ftrace.h>
 -- ----#include <linux/smp.h>
 +++++++#include <linux/init.h>
 +++++++#include <linux/cpu.h>
 +++++++#include <linux/dmi.h>
   +    #include <linux/nmi.h>
 -- ----#include <linux/timex.h>
 +++++++#include <linux/smp.h>
 +++++++#include <linux/mm.h>
        
 -------#include <asm/atomic.h>
   -    #include <asm/smp.h>
 -------#include <asm/mtrr.h>
 -------#include <asm/mpspec.h>
 -------#include <asm/desc.h>
        #include <asm/arch_hooks.h>
 -------#include <asm/hpet.h>
        #include <asm/pgalloc.h>
 +++++++#include <asm/genapic.h>
 +++++++#include <asm/atomic.h>
 +++++++#include <asm/mpspec.h>
        #include <asm/i8253.h>
   -    #include <asm/nmi.h>
 -------#include <asm/idle.h>
 +++++++#include <asm/i8259.h>
        #include <asm/proto.h>
   -    #include <asm/timex.h>
        #include <asm/apic.h>
 -------#include <asm/i8259.h>
 +++++++#include <asm/desc.h>
 +++++++#include <asm/hpet.h>
 +++++++#include <asm/idle.h>
 +++++++#include <asm/mtrr.h>
  ++    #include <asm/smp.h>
  ++    
 -  ----#include <mach_apic.h>
 -  ----#include <mach_apicdef.h>
 -  ----#include <mach_ipi.h>
 +++++++unsigned int num_processors;
 +++++++
 +++++++unsigned disabled_cpus __cpuinitdata;
 + +++++
  -     #include <mach_apic.h>
  -     #include <mach_apicdef.h>
  -     #include <mach_ipi.h>
 +++++++/* Processor that is doing the boot up */
 +++++++unsigned int boot_cpu_physical_apicid = -1U;
        
   -    #include <mach_apic.h>
   -    #include <mach_apicdef.h>
   -    #include <mach_ipi.h>
   +    /*
 -- ---- * Sanity check
 +++++++ * The highest APIC ID seen during enumeration.
 +++++++ *
 +++++++ * This determines the messaging protocol we can use: if all APIC IDs
 +++++++ * are in the 0 ... 7 range, then we can use logical addressing which
 +++++++ * has some performance advantages (better broadcasting).
 +++++++ *
 +++++++ * If there's an APIC ID above 8, we use physical addressing.
   +     */
 -- ----#if ((SPURIOUS_APIC_VECTOR & 0x0F) != 0x0F)
 -- ----# error SPURIOUS_APIC_VECTOR definition error
 -- ----#endif
 +++++++unsigned int max_physical_apicid;
 ++ ++++
 ++ ++++/*
   -     * Sanity check
 +++++++ * Bitmask of physically existing CPUs:
 ++ ++++ */
   -    #if ((SPURIOUS_APIC_VECTOR & 0x0F) != 0x0F)
   -    # error SPURIOUS_APIC_VECTOR definition error
   -    #endif
 +++++++physid_mask_t phys_cpu_present_map;
 +++++++
 +++++++/*
 +++++++ * Map cpu index to physical APIC ID
 +++++++ */
 +++++++DEFINE_EARLY_PER_CPU(u16, x86_cpu_to_apicid, BAD_APICID);
 +++++++DEFINE_EARLY_PER_CPU(u16, x86_bios_cpu_apicid, BAD_APICID);
 +++++++EXPORT_EARLY_PER_CPU_SYMBOL(x86_cpu_to_apicid);
 +++++++EXPORT_EARLY_PER_CPU_SYMBOL(x86_bios_cpu_apicid);
        
        #ifdef CONFIG_X86_32
        /*
@@@@@@@@@ -119,8 -99,8 -98,8 -97,8 -99,8 -99,8 -99,8 -99,8 +119,8 @@@@@@@@@ __setup("apicpmtimer", setup_apicpmtime
        #ifdef HAVE_X2APIC
        int x2apic;
        /* x2apic enabled before OS handover */
   -    int x2apic_preenabled;
   -    int disable_x2apic;
   +    static int x2apic_preenabled;
   +    static int disable_x2apic;
        static __init int setup_nox2apic(char *str)
        {
                disable_x2apic = 1;
@@@@@@@@@ -140,6 -120,6 -119,6 -118,8 -120,6 -120,6 -120,6 -120,6 +140,6 @@@@@@@@@ EXPORT_SYMBOL_GPL(local_apic_timer_c2_o
        
        int first_system_vector = 0xfe;
        
   -    char system_vectors[NR_VECTORS] = { [0 ... NR_VECTORS-1] = SYS_VECTOR_FREE};
   -    
        /*
         * Debug level, exported for io_apic.c
         */
@@@@@@@@@ -161,7 -141,7 -140,7 -141,7 -141,7 -141,7 -141,7 -141,7 +161,7 @@@@@@@@@ static int lapic_next_event(unsigned lo
                                    struct clock_event_device *evt);
        static void lapic_timer_setup(enum clock_event_mode mode,
                                      struct clock_event_device *evt);
   -    static void lapic_timer_broadcast(cpumask_t mask);
   +    static void lapic_timer_broadcast(const struct cpumask *mask);
        static void apic_pm_activate(void);
        
        /*
@@@@@@@@@ -247,7 -227,7 -226,7 -227,7 -227,7 -227,7 -227,7 -227,7 +247,7 @@@@@@@@@ void xapic_icr_write(u32 low, u32 id
                apic_write(APIC_ICR, low);
        }
        
   -    u64 xapic_icr_read(void)
   +    static u64 xapic_icr_read(void)
        {
                u32 icr1, icr2;
        
@@@@@@@@@ -287,7 -267,7 -266,7 -267,7 -267,7 -267,7 -267,7 -267,7 +287,7 @@@@@@@@@ void x2apic_icr_write(u32 low, u32 id
                wrmsrl(APIC_BASE_MSR + (APIC_ICR >> 4), ((__u64) id) << 32 | low);
        }
        
   -    u64 x2apic_icr_read(void)
   +    static u64 x2apic_icr_read(void)
        {
                unsigned long val;
        
@@@@@@@@@ -461,7 -441,7 -440,7 -441,6 -441,7 -441,7 -441,7 -441,7 +461,7 @@@@@@@@@ static void lapic_timer_setup(enum cloc
                        v = apic_read(APIC_LVTT);
                        v |= (APIC_LVT_MASKED | LOCAL_TIMER_VECTOR);
                        apic_write(APIC_LVTT, v);
   +                    apic_write(APIC_TMICT, 0xffffffff);
                        break;
                case CLOCK_EVT_MODE_RESUME:
                        /* Nothing to do here */
        /*
         * Local APIC timer broadcast function
         */
   -    static void lapic_timer_broadcast(cpumask_t mask)
   +    static void lapic_timer_broadcast(const struct cpumask *mask)
        {
        #ifdef CONFIG_SMP
 -------        send_IPI_mask(mask, LOCAL_TIMER_VECTOR);
 +++++++        apic->send_IPI_mask(mask, LOCAL_TIMER_VECTOR);
        #endif
        }
        
@@@@@@@@@ -490,7 -470,7 -469,7 -469,7 -470,7 -470,7 -470,7 -470,7 +490,7 @@@@@@@@@ static void __cpuinit setup_APIC_timer(
                struct clock_event_device *levt = &__get_cpu_var(lapic_events);
        
                memcpy(levt, &lapic_clockevent, sizeof(*levt));
   -            levt->cpumask = cpumask_of_cpu(smp_processor_id());
   +            levt->cpumask = cpumask_of(smp_processor_id());
        
                clockevents_register_device(levt);
        }
@@@@@@@@@ -555,7 -535,7 -534,7 -534,7 -535,7 -535,7 -535,7 -535,8 +555,8 @@@@@@@@@ static void __init lapic_cal_handler(st
                }
        }
        
------- static int __init calibrate_by_pmtimer(long deltapm, long *delta)
+++++++ static int __init
+++++++ calibrate_by_pmtimer(long deltapm, long *delta, long *deltatsc)
        {
                const long pm_100ms = PMTMR_TICKS_PER_SEC / 10;
                const long pm_thresh = pm_100ms / 100;
                return -1;
        #endif
        
-------         apic_printk(APIC_VERBOSE, "... PM timer delta = %ld\n", deltapm);
+++++++         apic_printk(APIC_VERBOSE, "... PM-Timer delta = %ld\n", deltapm);
        
                /* Check, if the PM timer is available */
                if (!deltapm)
        
                if (deltapm > (pm_100ms - pm_thresh) &&
                    deltapm < (pm_100ms + pm_thresh)) {
-------                 apic_printk(APIC_VERBOSE, "... PM timer result ok\n");
-------         } else {
-------                 res = (((u64)deltapm) *  mult) >> 22;
-------                 do_div(res, 1000000);
--- ---                 pr_warning("APIC calibration not consistent "
   -                    printk(KERN_WARNING "APIC calibration not consistent "
-------                         "with PM Timer: %ldms instead of 100ms\n",
-------                         (long)res);
-------                 /* Correct the lapic counter value */
-------                 res = (((u64)(*delta)) * pm_100ms);
+++++++                 apic_printk(APIC_VERBOSE, "... PM-Timer result ok\n");
+++++++                 return 0;
+++++++         }
+++++++ 
+++++++         res = (((u64)deltapm) *  mult) >> 22;
+++++++         do_div(res, 1000000);
+++++++         pr_warning("APIC calibration not consistent "
+++++++                    "with PM-Timer: %ldms instead of 100ms\n",(long)res);
+++++++ 
+++++++         /* Correct the lapic counter value */
+++++++         res = (((u64)(*delta)) * pm_100ms);
+++++++         do_div(res, deltapm);
+++++++         pr_info("APIC delta adjusted to PM-Timer: "
+++++++                 "%lu (%ld)\n", (unsigned long)res, *delta);
+++++++         *delta = (long)res;
+++++++ 
+++++++         /* Correct the tsc counter value */
+++++++         if (cpu_has_tsc) {
+++++++                 res = (((u64)(*deltatsc)) * pm_100ms);
                        do_div(res, deltapm);
--- ---                 pr_info("APIC delta adjusted to PM-Timer: "
   -                    printk(KERN_INFO "APIC delta adjusted to PM-Timer: "
-------                         "%lu (%ld)\n", (unsigned long)res, *delta);
-------                 *delta = (long)res;
+++++++                 apic_printk(APIC_VERBOSE, "TSC delta adjusted to "
+++++++                                           "PM-Timer: %lu (%ld) \n",
+++++++                                         (unsigned long)res, *deltatsc);
+++++++                 *deltatsc = (long)res;
                }
        
                return 0;
@@@@@@@@@ -599,7 -579,7 -578,7 -578,7 -579,7 -579,7 -579,7 -591,7 +611,7 @@@@@@@@@ static int __init calibrate_APIC_clock(
                struct clock_event_device *levt = &__get_cpu_var(lapic_events);
                void (*real_handler)(struct clock_event_device *dev);
                unsigned long deltaj;
-------         long delta;
+++++++         long delta, deltatsc;
                int pm_referenced = 0;
        
                local_irq_disable();
                delta = lapic_cal_t1 - lapic_cal_t2;
                apic_printk(APIC_VERBOSE, "... lapic delta = %ld\n", delta);
        
+++++++         deltatsc = (long)(lapic_cal_tsc2 - lapic_cal_tsc1);
+++++++ 
                /* we trust the PM based calibration if possible */
                pm_referenced = !calibrate_by_pmtimer(lapic_cal_pm2 - lapic_cal_pm1,
-------                                         &delta);
+++++++                                         &delta, &deltatsc);
        
                /* Calculate the scaled math multiplication factor */
                lapic_clockevent.mult = div_sc(delta, TICK_NSEC * LAPIC_CAL_LOOPS,
                            calibration_result);
        
                if (cpu_has_tsc) {
-------                 delta = (long)(lapic_cal_tsc2 - lapic_cal_tsc1);
                        apic_printk(APIC_VERBOSE, "..... CPU clock speed is "
                                    "%ld.%04ld MHz.\n",
-------                             (delta / LAPIC_CAL_LOOPS) / (1000000 / HZ),
-------                             (delta / LAPIC_CAL_LOOPS) % (1000000 / HZ));
+++++++                             (deltatsc / LAPIC_CAL_LOOPS) / (1000000 / HZ),
+++++++                             (deltatsc / LAPIC_CAL_LOOPS) % (1000000 / HZ));
                }
        
                apic_printk(APIC_VERBOSE, "..... host bus clock speed is "
                 */
                if (calibration_result < (1000000 / HZ)) {
                        local_irq_enable();
   -                    printk(KERN_WARNING
   -                           "APIC frequency too slow, disabling apic timer\n");
   +                    pr_warning("APIC frequency too slow, disabling apic timer\n");
                        return -1;
                }
        
                        while (lapic_cal_loops <= LAPIC_CAL_LOOPS)
                                cpu_relax();
        
   -                    local_irq_disable();
   -    
                        /* Stop the lapic timer */
                        lapic_timer_setup(CLOCK_EVT_MODE_SHUTDOWN, levt);
        
   -                    local_irq_enable();
   -    
                        /* Jiffies delta */
                        deltaj = lapic_cal_j2 - lapic_cal_j1;
                        apic_printk(APIC_VERBOSE, "... jiffies delta = %lu\n", deltaj);
                        local_irq_enable();
        
                if (levt->features & CLOCK_EVT_FEAT_DUMMY) {
   -                    printk(KERN_WARNING
   -                           "APIC timer disabled due to verification failure.\n");
   +                    pr_warning("APIC timer disabled due to verification failure\n");
                                return -1;
                }
        
@@@@@@@@@ -729,7 -709,7 -708,7 -714,7 -709,7 -709,7 -709,7 -722,7 +742,7 @@@@@@@@@ void __init setup_boot_APIC_clock(void
                 * broadcast mechanism is used. On UP systems simply ignore it.
                 */
                if (disable_apic_timer) {
   -                    printk(KERN_INFO "Disabling APIC timer\n");
   +                    pr_info("Disabling APIC timer\n");
                        /* No broadcast on UP ! */
                        if (num_possible_cpus() > 1) {
                                lapic_clockevent.mult = 1;
                if (nmi_watchdog != NMI_IO_APIC)
                        lapic_clockevent.features &= ~CLOCK_EVT_FEAT_DUMMY;
                else
   -                    printk(KERN_WARNING "APIC timer registered as dummy,"
   +                    pr_warning("APIC timer registered as dummy,"
                                " due to nmi_watchdog=%d!\n", nmi_watchdog);
        
                /* Setup the lapic or request the broadcast */
@@@@@@@@@ -788,7 -768,7 -767,7 -773,8 -768,7 -768,7 -768,7 -781,7 +801,7 @@@@@@@@@ static void local_apic_timer_interrupt(
                 * spurious.
                 */
                if (!evt->event_handler) {
   -                    printk(KERN_WARNING
   -                           "Spurious LAPIC timer interrupt on cpu %d\n", cpu);
   +                    pr_warning("Spurious LAPIC timer interrupt on cpu %d\n", cpu);
                        /* Switch it off */
                        lapic_timer_setup(CLOCK_EVT_MODE_SHUTDOWN, evt);
                        return;
                /*
                 * the NMI deadlock-detector uses this.
                 */
   -    #ifdef CONFIG_X86_64
   -            add_pda(apic_timer_irqs, 1);
   -    #else
   -            per_cpu(irq_stat, cpu).apic_timer_irqs++;
   -    #endif
   +            inc_irq_stat(apic_timer_irqs);
        
                evt->event_handler(evt);
        }
         * [ if a single-CPU system runs an SMP kernel then we call the local
         *   interrupt as well. Thus we cannot inline the local irq ... ]
         */
   -    void smp_apic_timer_interrupt(struct pt_regs *regs)
   +    void __irq_entry smp_apic_timer_interrupt(struct pt_regs *regs)
        {
                struct pt_regs *old_regs = set_irq_regs(regs);
        
                 * Besides, if we don't timer interrupts ignore the global
                 * interrupt lock, which is the WrongThing (tm) to do.
                 */
   -    #ifdef CONFIG_X86_64
                exit_idle();
   -    #endif
                irq_enter();
                local_apic_timer_interrupt();
                irq_exit();
@@@@@@@@@ -915,10 -895,10 -894,6 -907,6 -895,6 -895,10 -895,10 -908,10 +928,10 @@@@@@@@@ void disable_local_APIC(void
        {
                unsigned int value;
        
  +++           /* APIC hasn't been mapped yet */
  +++           if (!apic_phys)
  +++                   return;
  +++   
                clear_local_APIC();
        
                /*
@@@@@@@@@ -1011,11 -991,11 -986,11 -999,11 -987,11 -991,11 -991,11 -1004,11 +1024,11 @@@@@@@@@ int __init verify_local_APIC(void
                 */
                reg0 = apic_read(APIC_ID);
                apic_printk(APIC_DEBUG, "Getting ID: %x\n", reg0);
 -------        apic_write(APIC_ID, reg0 ^ APIC_ID_MASK);
 +++++++        apic_write(APIC_ID, reg0 ^ apic->apic_id_mask);
                reg1 = apic_read(APIC_ID);
                apic_printk(APIC_DEBUG, "Getting ID: %x\n", reg1);
                apic_write(APIC_ID, reg0);
 -------        if (reg1 != (reg0 ^ APIC_ID_MASK))
 +++++++        if (reg1 != (reg0 ^ apic->apic_id_mask))
                        return 0;
        
                /*
@@@@@@@@@ -1105,18 -1085,18 -1080,18 -1093,18 -1081,18 -1085,18 -1085,18 -1098,18 +1118,18 @@@@@@@@@ static void __cpuinit lapic_setup_esr(v
                unsigned int oldvalue, value, maxlvt;
        
                if (!lapic_is_integrated()) {
   -                    printk(KERN_INFO "No ESR for 82489DX.\n");
   +                    pr_info("No ESR for 82489DX.\n");
                        return;
                }
        
 -------        if (esr_disable) {
 +++++++        if (apic->disable_esr) {
                        /*
                         * Something untraceable is creating bad interrupts on
                         * secondary quads ... for the moment, just leave the
                         * ESR disabled - we can't do anything useful with the
                         * errors anyway - mbligh
                         */
   -                    printk(KERN_INFO "Leaving ESR disabled.\n");
   +                    pr_info("Leaving ESR disabled.\n");
                        return;
                }
        
@@@@@@@@@ -1150,14 -1130,9 -1125,9 -1138,9 -1126,9 -1130,9 -1130,9 -1143,9 +1163,14 @@@@@@@@@ void __cpuinit setup_local_APIC(void
                unsigned int value;
                int i, j;
        
 +++++++        if (disable_apic) {
 +++++++                arch_disable_smp_support();
 +++++++                return;
 +++++++        }
 +++++++
        #ifdef CONFIG_X86_32
                /* Pound the ESR really hard over the head with a big hammer - mbligh */
 -------        if (lapic_is_integrated() && esr_disable) {
 +++++++        if (lapic_is_integrated() && apic->disable_esr) {
                        apic_write(APIC_ESR, 0);
                        apic_write(APIC_ESR, 0);
                        apic_write(APIC_ESR, 0);
                 * Double-check whether this APIC is really registered.
                 * This is meaningless in clustered apic mode, so we skip it.
                 */
 -------        if (!apic_id_registered())
 +++++++        if (!apic->apic_id_registered())
                        BUG();
        
                /*
                 * an APIC.  See e.g. "AP-388 82489DX User's Manual" (Intel
                 * document number 292116).  So here it goes...
                 */
 -------        init_apic_ldr();
 +++++++        apic->init_apic_ldr();
        
                /*
                 * Set Task Priority to 'accept all'. We never change this
@@@@@@@@@ -1315,7 -1290,7 -1285,7 -1298,7 -1286,7 -1290,7 -1290,7 -1303,7 +1328,7 @@@@@@@@@ void check_x2apic(void
                rdmsr(MSR_IA32_APICBASE, msr, msr2);
        
                if (msr & X2APIC_ENABLE) {
   -                    printk("x2apic enabled by BIOS, switching to x2apic ops\n");
   +                    pr_info("x2apic enabled by BIOS, switching to x2apic ops\n");
                        x2apic_preenabled = x2apic = 1;
                        apic_ops = &x2apic_ops;
                }
@@@@@@@@@ -1327,12 -1302,12 -1297,12 -1310,12 -1298,12 -1302,12 -1302,12 -1315,12 +1340,12 @@@@@@@@@ void enable_x2apic(void
        
                rdmsr(MSR_IA32_APICBASE, msr, msr2);
                if (!(msr & X2APIC_ENABLE)) {
   -                    printk("Enabling x2apic\n");
   +                    pr_info("Enabling x2apic\n");
                        wrmsr(MSR_IA32_APICBASE, msr | X2APIC_ENABLE, 0);
                }
        }
        
   -    void enable_IR_x2apic(void)
   +    void __init enable_IR_x2apic(void)
        {
        #ifdef CONFIG_INTR_REMAP
                int ret;
                        return;
        
                if (!x2apic_preenabled && disable_x2apic) {
   -                    printk(KERN_INFO
   -                           "Skipped enabling x2apic and Interrupt-remapping "
   -                           "because of nox2apic\n");
   +                    pr_info("Skipped enabling x2apic and Interrupt-remapping "
   +                            "because of nox2apic\n");
                        return;
                }
        
                        panic("Bios already enabled x2apic, can't enforce nox2apic");
        
                if (!x2apic_preenabled && skip_ioapic_setup) {
   -                    printk(KERN_INFO
   -                           "Skipped enabling x2apic and Interrupt-remapping "
   -                           "because of skipping io-apic setup\n");
   +                    pr_info("Skipped enabling x2apic and Interrupt-remapping "
   +                            "because of skipping io-apic setup\n");
                        return;
                }
        
                ret = dmar_table_init();
                if (ret) {
   -                    printk(KERN_INFO
   -                           "dmar_table_init() failed with %d:\n", ret);
   +                    pr_info("dmar_table_init() failed with %d:\n", ret);
        
                        if (x2apic_preenabled)
                                panic("x2apic enabled by bios. But IR enabling failed");
                        else
   -                            printk(KERN_INFO
   -                                   "Not enabling x2apic,Intr-remapping\n");
   +                            pr_info("Not enabling x2apic,Intr-remapping\n");
                        return;
                }
        
        
                ret = save_mask_IO_APIC_setup();
                if (ret) {
   -                    printk(KERN_INFO "Saving IO-APIC state failed: %d\n", ret);
   +                    pr_info("Saving IO-APIC state failed: %d\n", ret);
                        goto end;
                }
        
        
                if (!ret) {
                        if (!x2apic_preenabled)
   -                            printk(KERN_INFO
   -                                   "Enabled x2apic and interrupt-remapping\n");
   +                            pr_info("Enabled x2apic and interrupt-remapping\n");
                        else
   -                            printk(KERN_INFO
   -                                   "Enabled Interrupt-remapping\n");
   +                            pr_info("Enabled Interrupt-remapping\n");
                } else
   -                    printk(KERN_ERR
   -                           "Failed to enable Interrupt-remapping and x2apic\n");
   +                    pr_err("Failed to enable Interrupt-remapping and x2apic\n");
        #else
                if (!cpu_has_x2apic)
                        return;
                        panic("x2apic enabled prior OS handover,"
                              " enable CONFIG_INTR_REMAP");
        
   -            printk(KERN_INFO "Enable CONFIG_INTR_REMAP for enabling intr-remapping "
   -                   " and x2apic\n");
   +            pr_info("Enable CONFIG_INTR_REMAP for enabling intr-remapping "
   +                    " and x2apic\n");
        #endif
        
                return;
        static int __init detect_init_APIC(void)
        {
                if (!cpu_has_apic) {
   -                    printk(KERN_INFO "No local APIC present\n");
   +                    pr_info("No local APIC present\n");
                        return -1;
                }
        
@@@@@@@@@ -1461,7 -1436,7 -1431,7 -1451,7 -1432,7 -1436,7 -1436,7 -1449,7 +1474,7 @@@@@@@@@ static int __init detect_init_APIC(void
                switch (boot_cpu_data.x86_vendor) {
                case X86_VENDOR_AMD:
                        if ((boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model > 1) ||
  ---  -                    (boot_cpu_data.x86 == 15))
  +++  +                    (boot_cpu_data.x86 >= 15))
                                break;
                        goto no_apic;
                case X86_VENDOR_INTEL:
                         * "lapic" specified.
                         */
                        if (!force_enable_local_apic) {
   -                            printk(KERN_INFO "Local APIC disabled by BIOS -- "
   -                                   "you can enable it with \"lapic\"\n");
   +                            pr_info("Local APIC disabled by BIOS -- "
   +                                    "you can enable it with \"lapic\"\n");
                                return -1;
                        }
                        /*
                         */
                        rdmsr(MSR_IA32_APICBASE, l, h);
                        if (!(l & MSR_IA32_APICBASE_ENABLE)) {
   -                            printk(KERN_INFO
   -                                   "Local APIC disabled by BIOS -- reenabling.\n");
   +                            pr_info("Local APIC disabled by BIOS -- reenabling.\n");
                                l &= ~MSR_IA32_APICBASE_BASE;
                                l |= MSR_IA32_APICBASE_ENABLE | APIC_DEFAULT_PHYS_BASE;
                                wrmsr(MSR_IA32_APICBASE, l, h);
                 */
                features = cpuid_edx(1);
                if (!(features & (1 << X86_FEATURE_APIC))) {
   -                    printk(KERN_WARNING "Could not enable APIC!\n");
   +                    pr_warning("Could not enable APIC!\n");
                        return -1;
                }
                set_cpu_cap(&boot_cpu_data, X86_FEATURE_APIC);
                if (l & MSR_IA32_APICBASE_ENABLE)
                        mp_lapic_addr = l & MSR_IA32_APICBASE_BASE;
        
   -            printk(KERN_INFO "Found and enabled local APIC!\n");
   +            pr_info("Found and enabled local APIC!\n");
        
                apic_pm_activate();
        
                return 0;
        
        no_apic:
   -            printk(KERN_INFO "No local APIC present or hardware disabled\n");
   +            pr_info("No local APIC present or hardware disabled\n");
                return -1;
        }
        #endif
@@@@@@@@@ -1595,14 -1570,14 -1565,14 -1586,14 -1566,14 -1570,14 -1570,14 -1583,14 +1608,14 @@@@@@@@@ int apic_version[MAX_APICS]
        
        int __init APIC_init_uniprocessor(void)
        {
 -------#ifdef CONFIG_X86_64
                if (disable_apic) {
   -                    printk(KERN_INFO "Apic disabled\n");
   +                    pr_info("Apic disabled\n");
                        return -1;
                }
 +++++++#ifdef CONFIG_X86_64
                if (!cpu_has_apic) {
                        disable_apic = 1;
   -                    printk(KERN_INFO "Apic disabled by BIOS\n");
   +                    pr_info("Apic disabled by BIOS\n");
                        return -1;
                }
        #else
                 */
                if (!cpu_has_apic &&
                    APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid])) {
   -                    printk(KERN_ERR "BIOS bug, local APIC 0x%x not detected!...\n",
   -                           boot_cpu_physical_apicid);
   +                    pr_err("BIOS bug, local APIC 0x%x not detected!...\n",
   +                            boot_cpu_physical_apicid);
                        clear_cpu_cap(&boot_cpu_data, X86_FEATURE_APIC);
                        return -1;
                }
                enable_IR_x2apic();
        #endif
        #ifdef CONFIG_X86_64
 -------        setup_apic_routing();
 +++++++        default_setup_apic_routing();
        #endif
        
                verify_local_APIC();
@@@@@@@@@ -1691,7 -1666,7 -1661,7 -1682,9 -1662,7 -1666,7 -1666,7 -1679,7 +1704,7 @@@@@@@@@ void smp_spurious_interrupt(struct pt_r
        {
                u32 v;
        
   -    #ifdef CONFIG_X86_64
                exit_idle();
   -    #endif
                irq_enter();
                /*
                 * Check if this really is a spurious interrupt and ACK it
                if (v & (1 << (SPURIOUS_APIC_VECTOR & 0x1f)))
                        ack_APIC_irq();
        
   -    #ifdef CONFIG_X86_64
   -            add_pda(irq_spurious_count, 1);
   -    #else
   +            inc_irq_stat(irq_spurious_count);
   +    
                /* see sw-dev-man vol 3, chapter 7.4.13.5 */
   -            printk(KERN_INFO "spurious APIC interrupt on CPU#%d, "
   -                   "should never happen.\n", smp_processor_id());
   -            __get_cpu_var(irq_stat).irq_spurious_count++;
   -    #endif
   +            pr_info("spurious APIC interrupt on CPU#%d, "
   +                    "should never happen.\n", smp_processor_id());
                irq_exit();
        }
        
@@@@@@@@@ -1717,7 -1692,7 -1687,7 -1713,9 -1688,7 -1692,7 -1692,7 -1705,7 +1730,7 @@@@@@@@@ void smp_error_interrupt(struct pt_reg
        {
                u32 v, v1;
        
   -    #ifdef CONFIG_X86_64
                exit_idle();
   -    #endif
                irq_enter();
                /* First tickle the hardware, only then report what went on. -- REW */
                v = apic_read(APIC_ESR);
                ack_APIC_irq();
                atomic_inc(&irq_err_count);
        
   -            /* Here is what the APIC error bits mean:
   -               0: Send CS error
   -               1: Receive CS error
   -               2: Send accept error
   -               3: Receive accept error
   -               4: Reserved
   -               5: Send illegal vector
   -               6: Received illegal vector
   -               7: Illegal register address
   -            */
   -            printk(KERN_DEBUG "APIC error on CPU%d: %02x(%02x)\n",
   +            /*
   +             * Here is what the APIC error bits mean:
   +             * 0: Send CS error
   +             * 1: Receive CS error
   +             * 2: Send accept error
   +             * 3: Receive accept error
   +             * 4: Reserved
   +             * 5: Send illegal vector
   +             * 6: Received illegal vector
   +             * 7: Illegal register address
   +             */
   +            pr_debug("APIC error on CPU%d: %02x(%02x)\n",
                        smp_processor_id(), v , v1);
                irq_exit();
        }
@@@@@@@@@ -1763,8 -1738,7 -1733,7 -1760,7 -1734,7 -1738,7 -1738,7 -1751,7 +1776,8 @@@@@@@@@ void __init connect_bsp_APIC(void
                        outb(0x01, 0x23);
                }
        #endif
 -------        enable_apic_mode();
 +++++++        if (apic->enable_apic_mode)
 +++++++                apic->enable_apic_mode();
        }
        
        /**
@@@@@@@@@ -1836,38 -1810,38 -1805,33 -1832,29 -1806,33 -1810,38 -1810,38 -1823,38 +1849,38 @@@@@@@@@ void disconnect_bsp_APIC(int virt_wire_
        void __cpuinit generic_processor_info(int apicid, int version)
        {
                int cpu;
   -            cpumask_t tmp_map;
        
                /*
                 * Validate version
                 */
                if (version == 0x0) {
   -                    printk(KERN_WARNING "BIOS bug, APIC version is 0 for CPU#%d! "
   -                                    "fixing up to 0x10. (tell your hw vendor)\n",
   +                    pr_warning("BIOS bug, APIC version is 0 for CPU#%d! "
   +                               "fixing up to 0x10. (tell your hw vendor)\n",
                                        version);
                        version = 0x10;
                }
                apic_version[apicid] = version;
        
   -            if (num_processors >= NR_CPUS) {
   -                    printk(KERN_WARNING "WARNING: NR_CPUS limit of %i reached."
   -                            "  Processor ignored.\n", NR_CPUS);
   +            if (num_processors >= nr_cpu_ids) {
   +                    int max = nr_cpu_ids;
   +                    int thiscpu = max + disabled_cpus;
   +    
   +                    pr_warning(
   +                            "ACPI: NR_CPUS/possible_cpus limit of %i reached."
   +                            "  Processor %d/0x%x ignored.\n", max, thiscpu, apicid);
   +    
   +                    disabled_cpus++;
                        return;
                }
        
                num_processors++;
   -            cpus_complement(tmp_map, cpu_present_map);
   -            cpu = first_cpu(tmp_map);
   +            cpu = cpumask_next_zero(-1, cpu_present_mask);
   +    
  +++           if (version != apic_version[boot_cpu_physical_apicid])
  +++                   WARN_ONCE(1,
  +++                           "ACPI: apic version mismatch, bootcpu: %x cpu %d: %x\n",
  +++                           apic_version[boot_cpu_physical_apicid], cpu, version);
  + +   
                physid_set(apicid, phys_cpu_present_map);
                if (apicid == boot_cpu_physical_apicid) {
                        /*
                }
        #endif
        
 -------#if defined(CONFIG_X86_SMP) || defined(CONFIG_X86_64)
 -------        /* are we being called early in kernel startup? */
 -------        if (early_per_cpu_ptr(x86_cpu_to_apicid)) {
 -------                u16 *cpu_to_apicid = early_per_cpu_ptr(x86_cpu_to_apicid);
 -------                u16 *bios_cpu_apicid = early_per_cpu_ptr(x86_bios_cpu_apicid);
 -------
 -------                cpu_to_apicid[cpu] = apicid;
 -------                bios_cpu_apicid[cpu] = apicid;
 -------        } else {
 -------                per_cpu(x86_cpu_to_apicid, cpu) = apicid;
 -------                per_cpu(x86_bios_cpu_apicid, cpu) = apicid;
 -------        }
 +++++++#if defined(CONFIG_SMP) || defined(CONFIG_X86_64)
 +++++++        early_per_cpu(x86_cpu_to_apicid, cpu) = apicid;
 +++++++        early_per_cpu(x86_bios_cpu_apicid, cpu) = apicid;
        #endif
        
   -            cpu_set(cpu, cpu_possible_map);
   -            cpu_set(cpu, cpu_present_map);
   +            set_cpu_possible(cpu, true);
   +            set_cpu_present(cpu, true);
        }
        
 -------#ifdef CONFIG_X86_64
        int hard_smp_processor_id(void)
        {
                return read_apic_id();
        }
 +++++++
 +++++++void default_init_apic_ldr(void)
 +++++++{
 +++++++        unsigned long val;
 +++++++
 +++++++        apic_write(APIC_DFR, APIC_DFR_VALUE);
 +++++++        val = apic_read(APIC_LDR) & ~APIC_LDR_MASK;
 +++++++        val |= SET_APIC_LOGICAL_ID(1UL << smp_processor_id());
 +++++++        apic_write(APIC_LDR, val);
 +++++++}
 +++++++
 +++++++#ifdef CONFIG_X86_32
 +++++++int default_apicid_to_node(int logical_apicid)
 +++++++{
 +++++++#ifdef CONFIG_SMP
 +++++++        return apicid_2_node[hard_smp_processor_id()];
 +++++++#else
 +++++++        return 0;
 +++++++#endif
 +++++++}
        #endif
        
        /*
@@@@@@@@@ -2129,16 -2093,16 -2083,16 -2106,18 -2084,16 -2093,16 -2093,16 -2106,16 +2142,16 @@@@@@@@@ __cpuinit int apic_is_clustered_box(voi
                bios_cpu_apicid = early_per_cpu_ptr(x86_bios_cpu_apicid);
                bitmap_zero(clustermap, NUM_APIC_CLUSTERS);
        
   -            for (i = 0; i < NR_CPUS; i++) {
   +            for (i = 0; i < nr_cpu_ids; i++) {
                        /* are we being called early in kernel startup? */
                        if (bios_cpu_apicid) {
                                id = bios_cpu_apicid[i];
   -                    }
   -                    else if (i < nr_cpu_ids) {
   +                    } else if (i < nr_cpu_ids) {
                                if (cpu_present(i))
                                        id = per_cpu(x86_bios_cpu_apicid, i);
                                else
                                        continue;
   -                    }
   -                    else
   +                    } else
                                break;
        
                        if (id != BAD_APICID)
@@@@@@@@@ -2230,7 -2194,7 -2184,7 -2209,7 -2185,7 -2194,7 -2194,7 -2207,7 +2243,7 @@@@@@@@@ static int __init apic_set_verbosity(ch
                else if (strcmp("verbose", arg) == 0)
                        apic_verbosity = APIC_VERBOSE;
                else {
   -                    printk(KERN_WARNING "APIC Verbosity level %s not recognised"
   +                    pr_warning("APIC Verbosity level %s not recognised"
                                " use apic=verbose or apic=debug\n", arg);
                        return -EINVAL;
                }
        #include <asm/io.h>
        #include <asm/nmi.h>
        #include <asm/smp.h>
   +    #include <asm/atomic.h>
        #include <asm/apicdef.h>
 -------#include <mach_mpparse.h>
   +    #include <asm/genapic.h>
   +    #include <asm/setup.h>
        
        /*
         * ES7000 chipsets
@@@@@@@@@ -163,39 -164,43 -164,43 -161,6 -164,43 -164,43 -164,43 -164,43 +163,39 @@@@@@@@@ es7000_rename_gsi(int ioapic, int gsi
                return gsi;
        }
        
 -- ----static void noop_wait_for_deassert(atomic_t *deassert_not_used)
 -- ----{
 -- ----}
 -- ----
   +    static int wakeup_secondary_cpu_via_mip(int cpu, unsigned long eip)
   +    {
   +            unsigned long vect = 0, psaival = 0;
   +    
   +            if (psai == NULL)
   +                    return -1;
   +    
   +            vect = ((unsigned long)__pa(eip)/0x1000) << 16;
   +            psaival = (0x1000000 | vect | cpu);
   +    
   +            while (*psai & 0x1000000)
   +                    ;
   +    
   +            *psai = psaival;
   +    
   +            return 0;
   +    }
   +    
 -- ----        genapic->wakeup_cpu = wakeup_secondary_cpu_via_mip;
   +    static int __init es7000_update_genapic(void)
   +    {
 -- ----                genapic->wait_for_init_deassert = noop_wait_for_deassert;
 -- ----                genapic->wakeup_cpu = wakeup_secondary_cpu_via_mip;
 +++++++        apic->wakeup_cpu = wakeup_secondary_cpu_via_mip;
   +    
   +            /* MPENTIUMIII */
   +            if (boot_cpu_data.x86 == 6 &&
   +                (boot_cpu_data.x86_model >= 7 || boot_cpu_data.x86_model <= 11)) {
   +                    es7000_update_genapic_to_cluster();
 +++++++                apic->wait_for_init_deassert = NULL;
 +++++++                apic->wakeup_cpu = wakeup_secondary_cpu_via_mip;
   +            }
   +    
   +            return 0;
   +    }
   +    
        void __init
        setup_unisys(void)
        {
                else
                        es7000_plat = ES7000_CLASSIC;
                ioapic_renumber_irq = es7000_rename_gsi;
   +    
   +            x86_quirks->update_genapic = es7000_update_genapic;
        }
        
        /*
@@@@@@@@@ -287,24 -292,31 -292,24 -250,31 -292,24 -292,24 -292,24 -292,24 +287,31 @@@@@@@@@ int __init find_unisys_acpi_oem_table(u
        {
                struct acpi_table_header *header = NULL;
                int i = 0;
+ + ++++        acpi_size tbl_size;
        
- - ----        while (ACPI_SUCCESS(acpi_get_table("OEM1", i++, &header))) {
+ + ++++        while (ACPI_SUCCESS(acpi_get_table_with_size("OEM1", i++, &header, &tbl_size))) {
                        if (!memcmp((char *) &header->oem_id, "UNISYS", 6)) {
                                struct oem_table *t = (struct oem_table *)header;
        
                                oem_addrX = t->OEMTableAddr;
                                oem_size = t->OEMTableSize;
+ + ++++                        early_acpi_os_unmap_memory(header, tbl_size);
        
                                *oem_addr = (unsigned long)__acpi_map_table(oem_addrX,
                                                                            oem_size);
                                return 0;
                        }
+ + ++++                early_acpi_os_unmap_memory(header, tbl_size);
                }
                return -1;
        }
        
        void __init unmap_unisys_acpi_oem_table(unsigned long oem_addr)
        {
+ + ++++        if (!oem_addr)
+ + ++++                return;
+ + ++++
+ + ++++        __acpi_unmap_table((char *)oem_addr, oem_size);
        }
        #endif
        
@@@@@@@@@ -354,449 -366,20 -359,20 -324,40 -359,20 -359,20 -359,20 -359,20 +361,449 @@@@@@@@@ es7000_mip_write(struct mip_reg *mip_re
                return status;
        }
        
 -- ----void __init
 -- ----es7000_sw_apic(void)
 -- ----{
 -- ----        if (es7000_plat) {
 -- ----                int mip_status;
 -- ----                struct mip_reg es7000_mip_reg;
 -- ----
 -- ----                printk("ES7000: Enabling APIC mode.\n");
 -- ----                memset(&es7000_mip_reg, 0, sizeof(struct mip_reg));
 -- ----                es7000_mip_reg.off_0 = MIP_SW_APIC;
 -- ----                es7000_mip_reg.off_38 = (MIP_VALID);
 -- ----                while ((mip_status = es7000_mip_write(&es7000_mip_reg)) != 0)
 -- ----                        printk("es7000_sw_apic: command failed, status = %x\n",
 -- ----                                mip_status);
   -    int
   -    es7000_start_cpu(int cpu, unsigned long eip)
 +++++++void __init es7000_enable_apic_mode(void)
 ++ ++++{
   -            unsigned long vect = 0, psaival = 0;
 +++++++        struct mip_reg es7000_mip_reg;
 +++++++        int mip_status;
 ++ ++++
   -            if (psai == NULL)
   -                    return -1;
 +++++++        if (!es7000_plat)
   +                    return;
 ++ ++++
   -            vect = ((unsigned long)__pa(eip)/0x1000) << 16;
   -            psaival = (0x1000000 | vect | cpu);
 +++++++        printk("ES7000: Enabling APIC mode.\n");
 +++++++        memset(&es7000_mip_reg, 0, sizeof(struct mip_reg));
 +++++++        es7000_mip_reg.off_0 = MIP_SW_APIC;
 +++++++        es7000_mip_reg.off_38 = MIP_VALID;
 ++ ++++
   -            while (*psai & 0x1000000)
   -                    ;
 +++++++        while ((mip_status = es7000_mip_write(&es7000_mip_reg)) != 0) {
 +++++++                printk("es7000_enable_apic_mode: command failed, status = %x\n",
 +++++++                        mip_status);
 +++++++        }
 +++++++}
 +++++++
 +++++++/*
 +++++++ * APIC driver for the Unisys ES7000 chipset.
 +++++++ */
 +++++++#define APIC_DEFINITION 1
 +++++++#include <linux/threads.h>
 +++++++#include <linux/cpumask.h>
 +++++++#include <asm/mpspec.h>
 +++++++#include <asm/genapic.h>
 +++++++#include <asm/fixmap.h>
 +++++++#include <asm/apicdef.h>
 +++++++#include <linux/kernel.h>
 +++++++#include <linux/string.h>
 +++++++#include <linux/init.h>
 +++++++#include <linux/acpi.h>
 +++++++#include <linux/smp.h>
 +++++++#include <asm/ipi.h>
 +++++++
 +++++++#define APIC_DFR_VALUE_CLUSTER          (APIC_DFR_CLUSTER)
 +++++++#define INT_DELIVERY_MODE_CLUSTER       (dest_LowestPrio)
 +++++++#define INT_DEST_MODE_CLUSTER           (1) /* logical delivery broadcast to all procs */
 +++++++
 +++++++#define APIC_DFR_VALUE                  (APIC_DFR_FLAT)
 +++++++
 +++++++extern void es7000_enable_apic_mode(void);
 +++++++extern int apic_version [MAX_APICS];
 +++++++extern u8 cpu_2_logical_apicid[];
 +++++++extern unsigned int boot_cpu_physical_apicid;
 +++++++
 +++++++extern int parse_unisys_oem (char *oemptr);
 +++++++extern int find_unisys_acpi_oem_table(unsigned long *oem_addr);
 +++++++extern void unmap_unisys_acpi_oem_table(unsigned long oem_addr);
 +++++++extern void setup_unisys(void);
 +++++++
 +++++++#define apicid_cluster(apicid)          (apicid & 0xF0)
 +++++++#define xapic_phys_to_log_apicid(cpu)   per_cpu(x86_bios_cpu_apicid, cpu)
 +++++++
 +++++++static void es7000_vector_allocation_domain(int cpu, cpumask_t *retmask)
 +++++++{
 +++++++        /* Careful. Some cpus do not strictly honor the set of cpus
 +++++++         * specified in the interrupt destination when using lowest
 +++++++         * priority interrupt delivery mode.
 +++++++         *
 +++++++         * In particular there was a hyperthreading cpu observed to
 +++++++         * deliver interrupts to the wrong hyperthread when only one
 +++++++         * hyperthread was specified in the interrupt desitination.
 +++++++         */
 +++++++        *retmask = (cpumask_t){ { [0] = APIC_ALL_CPUS, } };
 +++++++}
 ++ ++++
   -            *psai = psaival;
 ++ ++++
 +++++++static void es7000_wait_for_init_deassert(atomic_t *deassert)
 +++++++{
 +++++++#ifndef CONFIG_ES7000_CLUSTERED_APIC
 +++++++        while (!atomic_read(deassert))
 +++++++                cpu_relax();
 +++++++#endif
 +++++++        return;
 +++++++}
 +++++++
 +++++++static unsigned int es7000_get_apic_id(unsigned long x)
 +++++++{
 +++++++        return (x >> 24) & 0xFF;
 +++++++}
 +++++++
 +++++++#ifdef CONFIG_ACPI
 +++++++static int es7000_check_dsdt(void)
 +++++++{
 +++++++        struct acpi_table_header header;
 +++++++
 +++++++        if (ACPI_SUCCESS(acpi_get_table_header(ACPI_SIG_DSDT, 0, &header)) &&
 +++++++            !strncmp(header.oem_id, "UNISYS", 6))
 +++++++                return 1;
 ++ ++++        return 0;
 +++++++}
 +++++++#endif
 ++ ++++
 +++++++static void es7000_send_IPI_mask(const struct cpumask *mask, int vector)
 +++++++{
 +++++++        default_send_IPI_mask_sequence_phys(mask, vector);
 ++ ++++}
 ++ ++++
   -    void __init
   -    es7000_sw_apic(void)
   -    {
   -            if (es7000_plat) {
   -                    int mip_status;
   -                    struct mip_reg es7000_mip_reg;
   -    
   -                    printk("ES7000: Enabling APIC mode.\n");
   -                    memset(&es7000_mip_reg, 0, sizeof(struct mip_reg));
   -                    es7000_mip_reg.off_0 = MIP_SW_APIC;
   -                    es7000_mip_reg.off_38 = (MIP_VALID);
   -                    while ((mip_status = es7000_mip_write(&es7000_mip_reg)) != 0)
   -                            printk("es7000_sw_apic: command failed, status = %x\n",
   -                                    mip_status);
   -                    return;
 +++++++static void es7000_send_IPI_allbutself(int vector)
 +++++++{
 +++++++        default_send_IPI_mask_allbutself_phys(cpu_online_mask, vector);
 +++++++}
 +++++++
 +++++++static void es7000_send_IPI_all(int vector)
 +++++++{
 +++++++        es7000_send_IPI_mask(cpu_online_mask, vector);
 +++++++}
 +++++++
 +++++++static int es7000_apic_id_registered(void)
 +++++++{
 +++++++                return 1;
 +++++++}
 +++++++
 +++++++static const cpumask_t *target_cpus_cluster(void)
 +++++++{
 +++++++        return &CPU_MASK_ALL;
 +++++++}
 +++++++
 +++++++static const cpumask_t *es7000_target_cpus(void)
 +++++++{
 +++++++        return &cpumask_of_cpu(smp_processor_id());
 +++++++}
 +++++++
 +++++++static unsigned long
 +++++++es7000_check_apicid_used(physid_mask_t bitmap, int apicid)
 +++++++{
 +++++++        return 0;
 +++++++}
 +++++++static unsigned long es7000_check_apicid_present(int bit)
 +++++++{
 +++++++        return physid_isset(bit, phys_cpu_present_map);
 +++++++}
 +++++++
 +++++++static unsigned long calculate_ldr(int cpu)
 +++++++{
 +++++++        unsigned long id = xapic_phys_to_log_apicid(cpu);
 +++++++
 +++++++        return (SET_APIC_LOGICAL_ID(id));
 +++++++}
 +++++++
 +++++++/*
 +++++++ * Set up the logical destination ID.
 +++++++ *
 +++++++ * Intel recommends to set DFR, LdR and TPR before enabling
 +++++++ * an APIC.  See e.g. "AP-388 82489DX User's Manual" (Intel
 +++++++ * document number 292116).  So here it goes...
 +++++++ */
 +++++++static void es7000_init_apic_ldr_cluster(void)
 +++++++{
 +++++++        unsigned long val;
 +++++++        int cpu = smp_processor_id();
 +++++++
 +++++++        apic_write(APIC_DFR, APIC_DFR_VALUE_CLUSTER);
 +++++++        val = calculate_ldr(cpu);
 +++++++        apic_write(APIC_LDR, val);
 +++++++}
 +++++++
 +++++++static void es7000_init_apic_ldr(void)
 +++++++{
 +++++++        unsigned long val;
 +++++++        int cpu = smp_processor_id();
 +++++++
 +++++++        apic_write(APIC_DFR, APIC_DFR_VALUE);
 +++++++        val = calculate_ldr(cpu);
 +++++++        apic_write(APIC_LDR, val);
 +++++++}
 +++++++
 +++++++static void es7000_setup_apic_routing(void)
 +++++++{
 +++++++        int apic = per_cpu(x86_bios_cpu_apicid, smp_processor_id());
 +++++++        printk("Enabling APIC mode:  %s. Using %d I/O APICs, target cpus %lx\n",
 +++++++                (apic_version[apic] == 0x14) ?
 +++++++                        "Physical Cluster" : "Logical Cluster",
 +++++++                        nr_ioapics, cpus_addr(*es7000_target_cpus())[0]);
 +++++++}
 +++++++
 +++++++static int es7000_apicid_to_node(int logical_apicid)
 +++++++{
 +++++++        return 0;
 +++++++}
 +++++++
 +++++++
 +++++++static int es7000_cpu_present_to_apicid(int mps_cpu)
 +++++++{
 +++++++        if (!mps_cpu)
 +++++++                return boot_cpu_physical_apicid;
 +++++++        else if (mps_cpu < nr_cpu_ids)
 +++++++                return (int) per_cpu(x86_bios_cpu_apicid, mps_cpu);
 +++++++        else
 +++++++                return BAD_APICID;
 +++++++}
 +++++++
 +++++++static physid_mask_t es7000_apicid_to_cpu_present(int phys_apicid)
 +++++++{
 +++++++        static int id = 0;
 +++++++        physid_mask_t mask;
 +++++++
 +++++++        mask = physid_mask_of_physid(id);
 +++++++        ++id;
 +++++++
 +++++++        return mask;
 +++++++}
 +++++++
 +++++++/* Mapping from cpu number to logical apicid */
 +++++++static int es7000_cpu_to_logical_apicid(int cpu)
 +++++++{
 +++++++#ifdef CONFIG_SMP
 +++++++        if (cpu >= nr_cpu_ids)
 +++++++                return BAD_APICID;
 +++++++        return (int)cpu_2_logical_apicid[cpu];
 +++++++#else
 +++++++        return logical_smp_processor_id();
 +++++++#endif
 +++++++}
 +++++++
 +++++++static physid_mask_t es7000_ioapic_phys_id_map(physid_mask_t phys_map)
 +++++++{
 +++++++        /* For clustered we don't have a good way to do this yet - hack */
 +++++++        return physids_promote(0xff);
 +++++++}
 +++++++
 +++++++static int es7000_check_phys_apicid_present(int cpu_physical_apicid)
 +++++++{
 +++++++        boot_cpu_physical_apicid = read_apic_id();
 +++++++        return (1);
 +++++++}
 +++++++
 +++++++static unsigned int
 +++++++es7000_cpu_mask_to_apicid_cluster(const struct cpumask *cpumask)
 +++++++{
 +++++++        int cpus_found = 0;
 +++++++        int num_bits_set;
 +++++++        int apicid;
 +++++++        int cpu;
 +++++++
 +++++++        num_bits_set = cpumask_weight(cpumask);
 +++++++        /* Return id to all */
 +++++++        if (num_bits_set == nr_cpu_ids)
 +++++++                return 0xFF;
 +++++++        /*
 +++++++         * The cpus in the mask must all be on the apic cluster.  If are not
 +++++++         * on the same apicid cluster return default value of target_cpus():
 +++++++         */
 +++++++        cpu = cpumask_first(cpumask);
 +++++++        apicid = es7000_cpu_to_logical_apicid(cpu);
 +++++++
 +++++++        while (cpus_found < num_bits_set) {
 +++++++                if (cpumask_test_cpu(cpu, cpumask)) {
 +++++++                        int new_apicid = es7000_cpu_to_logical_apicid(cpu);
 +++++++
 +++++++                        if (apicid_cluster(apicid) !=
 +++++++                                        apicid_cluster(new_apicid)) {
 +++++++                                printk ("%s: Not a valid mask!\n", __func__);
 +++++++
 +++++++                                return 0xFF;
 +++++++                        }
 +++++++                        apicid = new_apicid;
 +++++++                        cpus_found++;
 +++++++                }
 +++++++                cpu++;
  ++++++        }
 +++++++        return apicid;
  ++++++}
 +++++++
 +++++++static unsigned int es7000_cpu_mask_to_apicid(const cpumask_t *cpumask)
 +++++++{
 +++++++        int cpus_found = 0;
 +++++++        int num_bits_set;
 +++++++        int apicid;
 +++++++        int cpu;
 +++++++
 +++++++        num_bits_set = cpus_weight(*cpumask);
 +++++++        /* Return id to all */
 +++++++        if (num_bits_set == nr_cpu_ids)
 +++++++                return es7000_cpu_to_logical_apicid(0);
 +++++++        /*
 +++++++         * The cpus in the mask must all be on the apic cluster.  If are not
 +++++++         * on the same apicid cluster return default value of target_cpus():
 +++++++         */
 +++++++        cpu = first_cpu(*cpumask);
 +++++++        apicid = es7000_cpu_to_logical_apicid(cpu);
 +++++++        while (cpus_found < num_bits_set) {
 +++++++                if (cpu_isset(cpu, *cpumask)) {
 +++++++                        int new_apicid = es7000_cpu_to_logical_apicid(cpu);
 +++++++
 +++++++                        if (apicid_cluster(apicid) !=
 +++++++                                        apicid_cluster(new_apicid)) {
 +++++++                                printk ("%s: Not a valid mask!\n", __func__);
 +++++++
 +++++++                                return es7000_cpu_to_logical_apicid(0);
 +++++++                        }
 +++++++                        apicid = new_apicid;
 +++++++                        cpus_found++;
 +++++++                }
 +++++++                cpu++;
 ++ ++++        }
 +++++++        return apicid;
 ++ ++++}
 +++++++
 +++++++static unsigned int
 +++++++es7000_cpu_mask_to_apicid_and(const struct cpumask *inmask,
 +++++++                              const struct cpumask *andmask)
 +++++++{
 +++++++        int apicid = es7000_cpu_to_logical_apicid(0);
 +++++++        cpumask_var_t cpumask;
 +++++++
 +++++++        if (!alloc_cpumask_var(&cpumask, GFP_ATOMIC))
 +++++++                return apicid;
 +++++++
 +++++++        cpumask_and(cpumask, inmask, andmask);
 +++++++        cpumask_and(cpumask, cpumask, cpu_online_mask);
 +++++++        apicid = es7000_cpu_mask_to_apicid(cpumask);
 +++++++
 +++++++        free_cpumask_var(cpumask);
 +++++++
 +++++++        return apicid;
 +++++++}
 +++++++
 +++++++static int es7000_phys_pkg_id(int cpuid_apic, int index_msb)
 +++++++{
 +++++++        return cpuid_apic >> index_msb;
 +++++++}
 +++++++
 +++++++void __init es7000_update_genapic_to_cluster(void)
 +++++++{
 +++++++        apic->target_cpus = target_cpus_cluster;
 +++++++        apic->irq_delivery_mode = INT_DELIVERY_MODE_CLUSTER;
 +++++++        apic->irq_dest_mode = INT_DEST_MODE_CLUSTER;
 +++++++
 +++++++        apic->init_apic_ldr = es7000_init_apic_ldr_cluster;
 +++++++
 +++++++        apic->cpu_mask_to_apicid = es7000_cpu_mask_to_apicid_cluster;
 +++++++}
 +++++++
 +++++++static int probe_es7000(void)
 +++++++{
 +++++++        /* probed later in mptable/ACPI hooks */
 +++++++        return 0;
 +++++++}
 +++++++
 +++++++static __init int
 +++++++es7000_mps_oem_check(struct mpc_table *mpc, char *oem, char *productid)
 +++++++{
 +++++++        if (mpc->oemptr) {
 +++++++                struct mpc_oemtable *oem_table =
 +++++++                        (struct mpc_oemtable *)mpc->oemptr;
 +++++++
 +++++++                if (!strncmp(oem, "UNISYS", 6))
 +++++++                        return parse_unisys_oem((char *)oem_table);
 +++++++        }
 +++++++        return 0;
 +++++++}
 +++++++
 +++++++#ifdef CONFIG_ACPI
 +++++++/* Hook from generic ACPI tables.c */
 +++++++static int __init es7000_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
 +++++++{
 +++++++        unsigned long oem_addr = 0;
 +++++++        int check_dsdt;
 +++++++        int ret = 0;
 +++++++
 +++++++        /* check dsdt at first to avoid clear fix_map for oem_addr */
 +++++++        check_dsdt = es7000_check_dsdt();
 +++++++
 +++++++        if (!find_unisys_acpi_oem_table(&oem_addr)) {
 +++++++                if (check_dsdt)
 +++++++                        ret = parse_unisys_oem((char *)oem_addr);
 +++++++                else {
 +++++++                        setup_unisys();
 +++++++                        ret = 1;
 +++++++                }
 +++++++                /*
 +++++++                 * we need to unmap it
 +++++++                 */
 +++++++                unmap_unisys_acpi_oem_table(oem_addr);
 + +            }
 +++++++        return ret;
 +++++++}
 +++++++#else
 +++++++static int __init es7000_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
 +++++++{
 +++++++        return 0;
 + +    }
 +++++++#endif
 +++++++
 +++++++
 +++++++struct genapic apic_es7000 = {
 +++++++
 +++++++        .name                           = "es7000",
 +++++++        .probe                          = probe_es7000,
 +++++++        .acpi_madt_oem_check            = es7000_acpi_madt_oem_check,
 +++++++        .apic_id_registered             = es7000_apic_id_registered,
 +++++++
 +++++++        .irq_delivery_mode              = dest_Fixed,
 +++++++        /* phys delivery to target CPUs: */
 +++++++        .irq_dest_mode                  = 0,
 +++++++
 +++++++        .target_cpus                    = es7000_target_cpus,
 +++++++        .disable_esr                    = 1,
 +++++++        .dest_logical                   = 0,
 +++++++        .check_apicid_used              = es7000_check_apicid_used,
 +++++++        .check_apicid_present           = es7000_check_apicid_present,
 +++++++
 +++++++        .vector_allocation_domain       = es7000_vector_allocation_domain,
 +++++++        .init_apic_ldr                  = es7000_init_apic_ldr,
 +++++++
 +++++++        .ioapic_phys_id_map             = es7000_ioapic_phys_id_map,
 +++++++        .setup_apic_routing             = es7000_setup_apic_routing,
 +++++++        .multi_timer_check              = NULL,
 +++++++        .apicid_to_node                 = es7000_apicid_to_node,
 +++++++        .cpu_to_logical_apicid          = es7000_cpu_to_logical_apicid,
 +++++++        .cpu_present_to_apicid          = es7000_cpu_present_to_apicid,
 +++++++        .apicid_to_cpu_present          = es7000_apicid_to_cpu_present,
 +++++++        .setup_portio_remap             = NULL,
 +++++++        .check_phys_apicid_present      = es7000_check_phys_apicid_present,
 +++++++        .enable_apic_mode               = es7000_enable_apic_mode,
 +++++++        .phys_pkg_id                    = es7000_phys_pkg_id,
 +++++++        .mps_oem_check                  = es7000_mps_oem_check,
 +++++++
 +++++++        .get_apic_id                    = es7000_get_apic_id,
 +++++++        .set_apic_id                    = NULL,
 +++++++        .apic_id_mask                   = 0xFF << 24,
 +++++++
 +++++++        .cpu_mask_to_apicid             = es7000_cpu_mask_to_apicid,
 +++++++        .cpu_mask_to_apicid_and         = es7000_cpu_mask_to_apicid_and,
 +++++++
 +++++++        .send_IPI_mask                  = es7000_send_IPI_mask,
 +++++++        .send_IPI_mask_allbutself       = NULL,
 +++++++        .send_IPI_allbutself            = es7000_send_IPI_allbutself,
 +++++++        .send_IPI_all                   = es7000_send_IPI_all,
 +++++++        .send_IPI_self                  = default_send_IPI_self,
 +++++++
 +++++++        .wakeup_cpu                     = NULL,
 +++++++
 +++++++        .trampoline_phys_low            = 0x467,
 +++++++        .trampoline_phys_high           = 0x469,
 +++++++
 +++++++        .wait_for_init_deassert         = es7000_wait_for_init_deassert,
 +++++++
 +++++++        /* Nothing to do for most platforms, since cleared by the INIT cycle: */
 +++++++        .smp_callin_clear_local_apic    = NULL,
 +++++++        .store_NMI_vector               = NULL,
 +++++++        .inquire_remote_apic            = default_inquire_remote_apic,
 +++++++};
diff --combined arch/x86/mm/init_32.c
        #include <linux/init.h>
        #include <linux/highmem.h>
        #include <linux/pagemap.h>
   +    #include <linux/pci.h>
        #include <linux/pfn.h>
        #include <linux/poison.h>
        #include <linux/bootmem.h>
        #include <asm/paravirt.h>
        #include <asm/setup.h>
        #include <asm/cacheflush.h>
 -------#include <asm/smp.h>
        
        unsigned int __VMALLOC_RESERVE = 128 << 20;
        
@@@@@@@@@ -67,7 -68,7 -68,7 -67,7 -68,7 -68,7 -68,7 -68,7 +67,7 @@@@@@@@@ static unsigned long __meminitdata tabl
        
        static int __initdata after_init_bootmem;
        
   -    static __init void *alloc_low_page(unsigned long *phys)
   +    static __init void *alloc_low_page(void)
        {
                unsigned long pfn = table_end++;
                void *adr;
        
                adr = __va(pfn * PAGE_SIZE);
                memset(adr, 0, PAGE_SIZE);
   -            *phys  = pfn * PAGE_SIZE;
                return adr;
        }
        
@@@@@@@@@ -91,17 -92,17 -92,17 -92,16 -92,17 -92,17 -92,17 -92,17 +91,17 @@@@@@@@@ static pmd_t * __init one_md_table_init
                pmd_t *pmd_table;
        
        #ifdef CONFIG_X86_PAE
   -            unsigned long phys;
                if (!(pgd_val(*pgd) & _PAGE_PRESENT)) {
                        if (after_init_bootmem)
                                pmd_table = (pmd_t *)alloc_bootmem_low_pages(PAGE_SIZE);
                        else
   -                            pmd_table = (pmd_t *)alloc_low_page(&phys);
   +                            pmd_table = (pmd_t *)alloc_low_page();
                        paravirt_alloc_pmd(&init_mm, __pa(pmd_table) >> PAGE_SHIFT);
                        set_pgd(pgd, __pgd(__pa(pmd_table) | _PAGE_PRESENT));
                        pud = pud_offset(pgd, 0);
                        BUG_ON(pmd_table != pmd_offset(pud, 0));
   +    
   +                    return pmd_table;
                }
        #endif
                pud = pud_offset(pgd, 0);
@@@@@@@@@ -126,8 -127,8 -127,8 -126,10 -127,8 -127,8 -127,8 -127,8 +126,8 @@@@@@@@@ static pte_t * __init one_page_table_in
                                if (!page_table)
                                        page_table =
                                        (pte_t *)alloc_bootmem_low_pages(PAGE_SIZE);
   -                    } else {
   -                            unsigned long phys;
   -                            page_table = (pte_t *)alloc_low_page(&phys);
   -                    }
   +                    } else
   +                            page_table = (pte_t *)alloc_low_page();
        
                        paravirt_alloc_pte(&init_mm, __pa(page_table) >> PAGE_SHIFT);
                        set_pmd(pmd, __pmd(__pa(page_table) | _PAGE_TABLE));
                return pte_offset_kernel(pmd, 0);
        }
        
  +++   static pte_t *__init page_table_kmap_check(pte_t *pte, pmd_t *pmd,
  +++                                              unsigned long vaddr, pte_t *lastpte)
  +++   {
  +++   #ifdef CONFIG_HIGHMEM
  +++           /*
  +++            * Something (early fixmap) may already have put a pte
  +++            * page here, which causes the page table allocation
  +++            * to become nonlinear. Attempt to fix it, and if it
  +++            * is still nonlinear then we have to bug.
  +++            */
  +++           int pmd_idx_kmap_begin = fix_to_virt(FIX_KMAP_END) >> PMD_SHIFT;
  +++           int pmd_idx_kmap_end = fix_to_virt(FIX_KMAP_BEGIN) >> PMD_SHIFT;
  +++   
  +++           if (pmd_idx_kmap_begin != pmd_idx_kmap_end
  +++               && (vaddr >> PMD_SHIFT) >= pmd_idx_kmap_begin
  +++               && (vaddr >> PMD_SHIFT) <= pmd_idx_kmap_end
  +++               && ((__pa(pte) >> PAGE_SHIFT) < table_start
  +++                   || (__pa(pte) >> PAGE_SHIFT) >= table_end)) {
  +++                   pte_t *newpte;
  +++                   int i;
  +++   
  +++                   BUG_ON(after_init_bootmem);
  +++                   newpte = alloc_low_page();
  +++                   for (i = 0; i < PTRS_PER_PTE; i++)
  +++                           set_pte(newpte + i, pte[i]);
  +++   
  +++                   paravirt_alloc_pte(&init_mm, __pa(newpte) >> PAGE_SHIFT);
  +++                   set_pmd(pmd, __pmd(__pa(newpte)|_PAGE_TABLE));
  +++                   BUG_ON(newpte != pte_offset_kernel(pmd, 0));
  +++                   __flush_tlb_all();
  +++   
  +++                   paravirt_release_pte(__pa(pte) >> PAGE_SHIFT);
  +++                   pte = newpte;
  +++           }
  +++           BUG_ON(vaddr < fix_to_virt(FIX_KMAP_BEGIN - 1)
  +++                  && vaddr > fix_to_virt(FIX_KMAP_END)
  +++                  && lastpte && lastpte + PTRS_PER_PTE != pte);
  +++   #endif
  +++           return pte;
  +++   }
  +++   
        /*
         * This function initializes a certain range of kernel virtual memory
         * with new bootmem page tables, everywhere page tables are missing in
@@@@@@@@@ -194,7 -195,7 -154,6 -155,6 -154,6 -195,7 -195,7 -195,7 +194,7 @@@@@@@@@ page_table_range_init(unsigned long sta
                unsigned long vaddr;
                pgd_t *pgd;
                pmd_t *pmd;
  +++           pte_t *pte = NULL;
        
                vaddr = start;
                pgd_idx = pgd_index(vaddr);
                        pmd = pmd + pmd_index(vaddr);
                        for (; (pmd_idx < PTRS_PER_PMD) && (vaddr != end);
                                                                pmd++, pmd_idx++) {
  ---                           one_page_table_init(pmd);
  +++                           pte = page_table_kmap_check(one_page_table_init(pmd),
  +++                                                       pmd, vaddr, pte);
        
                                vaddr += PMD_SIZE;
                        }
@@@@@@@@@ -370,8 -371,8 -328,8 -329,6 -328,8 -371,8 -371,8 -371,8 +370,8 @@@@@@@@@ int devmem_is_allowed(unsigned long pag
        {
                if (pagenr <= 256)
                        return 1;
   +            if (iomem_is_exclusive(pagenr << PAGE_SHIFT))
   +                    return 0;
                if (!page_is_ram(pagenr))
                        return 1;
                return 0;
@@@@@@@@@ -479,12 -480,12 -437,12 -436,8 -437,12 -480,12 -480,12 -480,12 +479,12 @@@@@@@@@ static void __init set_highmem_pages_in
        #endif /* !CONFIG_NUMA */
        
        #else
   -    # define permanent_kmaps_init(pgd_base)         do { } while (0)
   -    # define set_highmem_pages_init()       do { } while (0)
   +    static inline void permanent_kmaps_init(pgd_t *pgd_base)
   +    {
   +    }
   +    static inline void set_highmem_pages_init(void)
   +    {
   +    }
        #endif /* CONFIG_HIGHMEM */
        
        void __init native_pagetable_setup_start(pgd_t *base)
@@@@@@@@@ -550,6 -551,6 -508,7 -503,7 -508,7 -551,6 -551,6 -551,6 +550,6 @@@@@@@@@ static void __init early_ioremap_page_t
                 * Fixed mappings, only the page table structure has to be
                 * created - mappings will be set by set_fixmap():
                 */
  ---           early_ioremap_clear();
                vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK;
                end = (FIXADDR_TOP + PMD_SIZE - 1) & PMD_MASK;
                page_table_range_init(vaddr, end, pgd_base);
@@@@@@@@@ -674,75 -675,75 -633,75 -628,75 -633,75 -675,75 -675,97 -675,75 +674,97 @@@@@@@@@ static int __init parse_highmem(char *a
        }
        early_param("highmem", parse_highmem);
        
++++++ +#define MSG_HIGHMEM_TOO_BIG \
++++++ +        "highmem size (%luMB) is bigger than pages available (%luMB)!\n"
++++++ +
++++++ +#define MSG_LOWMEM_TOO_SMALL \
++++++ +        "highmem size (%luMB) results in <64MB lowmem, ignoring it!\n"
        /*
------ - * Determine low and high memory ranges:
++++++ + * All of RAM fits into lowmem - but if user wants highmem
++++++ + * artificially via the highmem=x boot parameter then create
++++++ + * it:
         */
------ -void __init find_low_pfn_range(void)
++++++ +void __init lowmem_pfn_init(void)
        {
------ -        /* it could update max_pfn */
------ -
                /* max_low_pfn is 0, we already have early_res support */
------ -
                max_low_pfn = max_pfn;
------ -        if (max_low_pfn > MAXMEM_PFN) {
------ -                if (highmem_pages == -1)
------ -                        highmem_pages = max_pfn - MAXMEM_PFN;
------ -                if (highmem_pages + MAXMEM_PFN < max_pfn)
------ -                        max_pfn = MAXMEM_PFN + highmem_pages;
------ -                if (highmem_pages + MAXMEM_PFN > max_pfn) {
------ -                        printk(KERN_WARNING "only %luMB highmem pages "
------ -                                "available, ignoring highmem size of %uMB.\n",
------ -                                pages_to_mb(max_pfn - MAXMEM_PFN),
++++++ +
++++++ +        if (highmem_pages == -1)
++++++ +                highmem_pages = 0;
++++++ +#ifdef CONFIG_HIGHMEM
++++++ +        if (highmem_pages >= max_pfn) {
++++++ +                printk(KERN_ERR MSG_HIGHMEM_TOO_BIG,
++++++ +                        pages_to_mb(highmem_pages), pages_to_mb(max_pfn));
++++++ +                highmem_pages = 0;
++++++ +        }
++++++ +        if (highmem_pages) {
++++++ +                if (max_low_pfn - highmem_pages < 64*1024*1024/PAGE_SIZE) {
++++++ +                        printk(KERN_ERR MSG_LOWMEM_TOO_SMALL,
                                        pages_to_mb(highmem_pages));
                                highmem_pages = 0;
                        }
------ -                max_low_pfn = MAXMEM_PFN;
++++++ +                max_low_pfn -= highmem_pages;
++++++ +        }
++++++ +#else
++++++ +        if (highmem_pages)
++++++ +                printk(KERN_ERR "ignoring highmem size on non-highmem kernel!\n");
++++++ +#endif
++++++ +}
++++++ +
++++++ +#define MSG_HIGHMEM_TOO_SMALL \
++++++ +        "only %luMB highmem pages available, ignoring highmem size of %luMB!\n"
++++++ +
++++++ +#define MSG_HIGHMEM_TRIMMED \
++++++ +        "Warning: only 4GB will be used. Use a HIGHMEM64G enabled kernel!\n"
++++++ +/*
++++++ + * We have more RAM than fits into lowmem - we try to put it into
++++++ + * highmem, also taking the highmem=x boot parameter into account:
++++++ + */
++++++ +void __init highmem_pfn_init(void)
++++++ +{
++++++ +        max_low_pfn = MAXMEM_PFN;
++++++ +
++++++ +        if (highmem_pages == -1)
++++++ +                highmem_pages = max_pfn - MAXMEM_PFN;
++++++ +
++++++ +        if (highmem_pages + MAXMEM_PFN < max_pfn)
++++++ +                max_pfn = MAXMEM_PFN + highmem_pages;
++++++ +
++++++ +        if (highmem_pages + MAXMEM_PFN > max_pfn) {
++++++ +                printk(KERN_WARNING MSG_HIGHMEM_TOO_SMALL,
++++++ +                        pages_to_mb(max_pfn - MAXMEM_PFN),
++++++ +                        pages_to_mb(highmem_pages));
++++++ +                highmem_pages = 0;
++++++ +        }
        #ifndef CONFIG_HIGHMEM
------ -                /* Maximum memory usable is what is directly addressable */
------ -                printk(KERN_WARNING "Warning only %ldMB will be used.\n",
------ -                                        MAXMEM>>20);
------ -                if (max_pfn > MAX_NONPAE_PFN)
------ -                        printk(KERN_WARNING
------ -                                 "Use a HIGHMEM64G enabled kernel.\n");
------ -                else
------ -                        printk(KERN_WARNING "Use a HIGHMEM enabled kernel.\n");
------ -                max_pfn = MAXMEM_PFN;
++++++ +        /* Maximum memory usable is what is directly addressable */
++++++ +        printk(KERN_WARNING "Warning only %ldMB will be used.\n", MAXMEM>>20);
++++++ +        if (max_pfn > MAX_NONPAE_PFN)
++++++ +                printk(KERN_WARNING "Use a HIGHMEM64G enabled kernel.\n");
++++++ +        else
++++++ +                printk(KERN_WARNING "Use a HIGHMEM enabled kernel.\n");
++++++ +        max_pfn = MAXMEM_PFN;
        #else /* !CONFIG_HIGHMEM */
        #ifndef CONFIG_HIGHMEM64G
------ -                if (max_pfn > MAX_NONPAE_PFN) {
------ -                        max_pfn = MAX_NONPAE_PFN;
------ -                        printk(KERN_WARNING "Warning only 4GB will be used."
------ -                                "Use a HIGHMEM64G enabled kernel.\n");
------ -                }
++++++ +        if (max_pfn > MAX_NONPAE_PFN) {
++++++ +                max_pfn = MAX_NONPAE_PFN;
++++++ +                printk(KERN_WARNING MSG_HIGHMEM_TRIMMED);
++++++ +        }
        #endif /* !CONFIG_HIGHMEM64G */
        #endif /* !CONFIG_HIGHMEM */
------ -        } else {
------ -                if (highmem_pages == -1)
------ -                        highmem_pages = 0;
------ -#ifdef CONFIG_HIGHMEM
------ -                if (highmem_pages >= max_pfn) {
------ -                        printk(KERN_ERR "highmem size specified (%uMB) is "
------ -                                "bigger than pages available (%luMB)!.\n",
------ -                                pages_to_mb(highmem_pages),
------ -                                pages_to_mb(max_pfn));
------ -                        highmem_pages = 0;
------ -                }
------ -                if (highmem_pages) {
------ -                        if (max_low_pfn - highmem_pages <
------ -                            64*1024*1024/PAGE_SIZE){
------ -                                printk(KERN_ERR "highmem size %uMB results in "
------ -                                "smaller than 64MB lowmem, ignoring it.\n"
------ -                                        , pages_to_mb(highmem_pages));
------ -                                highmem_pages = 0;
------ -                        }
------ -                        max_low_pfn -= highmem_pages;
------ -                }
------ -#else
------ -                if (highmem_pages)
------ -                        printk(KERN_ERR "ignoring highmem size on non-highmem"
------ -                                        " kernel!\n");
------ -#endif
------ -        }
++++++ +}
++++++ +
++++++ +/*
++++++ + * Determine low and high memory ranges:
++++++ + */
++++++ +void __init find_low_pfn_range(void)
++++++ +{
++++++ +        /* it could update max_pfn */
++++++ +
++++++ +        if (max_pfn <= MAXMEM_PFN)
++++++ +                lowmem_pfn_init();
++++++ +        else
++++++ +                highmem_pfn_init();
        }
        
        #ifndef CONFIG_NEED_MULTIPLE_NODES
@@@@@@@@@ -842,7 -843,7 -801,7 -796,7 -801,7 -843,7 -865,7 -843,7 +864,7 @@@@@@@@@ static void __init find_early_table_spa
                tables += PAGE_ALIGN(ptes * sizeof(pte_t));
        
                /* for fixmap */
  ---           tables += PAGE_SIZE * 2;
  +++           tables += PAGE_ALIGN(__end_of_fixed_addresses * sizeof(pte_t));
        
                /*
                 * RED-PEN putting page tables only on node 0 could
@@@@@@@@@ -1015,7 -1016,7 -974,7 -969,7 -974,7 -1016,7 -1038,7 -1016,7 +1037,7 @@@@@@@@@ void __init mem_init(void
                int codesize, reservedpages, datasize, initsize;
                int tmp;
        
   -            start_periodic_check_for_corruption();
   +            pci_iommu_alloc();
        
        #ifdef CONFIG_FLATMEM
                BUG_ON(!mem_map);
                        (unsigned long)&_text, (unsigned long)&_etext,
                        ((unsigned long)&_etext - (unsigned long)&_text) >> 10);
        
   +            /*
   +             * Check boundaries twice: Some fundamental inconsistencies can
   +             * be detected at build time already.
   +             */
   +    #define __FIXADDR_TOP (-PAGE_SIZE)
   +    #ifdef CONFIG_HIGHMEM
   +            BUILD_BUG_ON(PKMAP_BASE + LAST_PKMAP*PAGE_SIZE  > FIXADDR_START);
   +            BUILD_BUG_ON(VMALLOC_END                        > PKMAP_BASE);
   +    #endif
   +    #define high_memory (-128UL << 20)
   +            BUILD_BUG_ON(VMALLOC_START                      >= VMALLOC_END);
   +    #undef high_memory
   +    #undef __FIXADDR_TOP
   +    
        #ifdef CONFIG_HIGHMEM
                BUG_ON(PKMAP_BASE + LAST_PKMAP*PAGE_SIZE        > FIXADDR_START);
                BUG_ON(VMALLOC_END                              > PKMAP_BASE);
        #endif
   -            BUG_ON(VMALLOC_START                            > VMALLOC_END);
   +            BUG_ON(VMALLOC_START                            >= VMALLOC_END);
                BUG_ON((unsigned long)high_memory               > VMALLOC_START);
        
                if (boot_cpu_data.wp_works_ok < 0)
@@@@@@@@@ -1122,7 -1123,7 -1081,7 -1062,7 -1081,7 -1123,7 -1145,7 -1123,7 +1144,7 @@@@@@@@@ int arch_add_memory(int nid, u64 start
                unsigned long start_pfn = start >> PAGE_SHIFT;
                unsigned long nr_pages = size >> PAGE_SHIFT;
        
   -            return __add_pages(zone, start_pfn, nr_pages);
   +            return __add_pages(nid, zone, start_pfn, nr_pages);
        }
        #endif