Merge branches 'x86/apic', 'x86/asm', 'x86/cleanups', 'x86/debug', 'x86/kconfig', 'x86/mm', 'x86/ptrace', 'x86/setup' and 'x86/urgent'; commit 'v2.6.29-rc8' into x86/core
This commit is contained in:
parent
c550033ced
7a81d9a7da
88200bc28d
0f3fa48a7e
91219bcbdc
0634023562
773e673de2
5a8ac9d28d
16a6791934
895791dac6
commit
0ca0f16fd1
@ -373,10 +373,10 @@ Filesystem Resizing http://ext2resize.sourceforge.net/
|
||||
Compression (*) http://e2compr.sourceforge.net/
|
||||
|
||||
Implementations for:
|
||||
Windows 95/98/NT/2000 http://uranus.it.swin.edu.au/~jn/linux/Explore2fs.htm
|
||||
Windows 95 (*) http://www.yipton.demon.co.uk/content.html#FSDEXT2
|
||||
Windows 95/98/NT/2000 http://www.chrysocome.net/explore2fs
|
||||
Windows 95 (*) http://www.yipton.net/content.html#FSDEXT2
|
||||
DOS client (*) ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/
|
||||
OS/2 http://perso.wanadoo.fr/matthieu.willm/ext2-os2/
|
||||
RISC OS client ftp://ftp.barnet.ac.uk/pub/acorn/armlinux/iscafs/
|
||||
OS/2 (*) ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/
|
||||
RISC OS client http://www.esw-heim.tu-clausthal.de/~marco/smorbrod/IscaFS/
|
||||
|
||||
(*) no longer actively developed/supported (as of Apr 2001)
|
||||
(*) no longer actively developed/supported (as of Mar 2009)
|
||||
|
@ -198,5 +198,5 @@ kernel source: <file:fs/ext3/>
|
||||
programs: http://e2fsprogs.sourceforge.net/
|
||||
http://ext2resize.sourceforge.net
|
||||
|
||||
useful links: http://www-106.ibm.com/developerworks/linux/library/l-fs7/
|
||||
http://www-106.ibm.com/developerworks/linux/library/l-fs8/
|
||||
useful links: http://www.ibm.com/developerworks/library/l-fs7.html
|
||||
http://www.ibm.com/developerworks/library/l-fs8.html
|
||||
|
@ -42,6 +42,11 @@ Supported chips:
|
||||
Addresses scanned: I2C 0x4e
|
||||
Datasheet: Publicly available at the Maxim website
|
||||
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3497
|
||||
* Maxim MAX6648
|
||||
Prefix: 'max6646'
|
||||
Addresses scanned: I2C 0x4c
|
||||
Datasheet: Publicly available at the Maxim website
|
||||
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3500
|
||||
* Maxim MAX6649
|
||||
Prefix: 'max6646'
|
||||
Addresses scanned: I2C 0x4c
|
||||
@ -74,6 +79,11 @@ Supported chips:
|
||||
0x4c, 0x4d and 0x4e
|
||||
Datasheet: Publicly available at the Maxim website
|
||||
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3370
|
||||
* Maxim MAX6692
|
||||
Prefix: 'max6646'
|
||||
Addresses scanned: I2C 0x4c
|
||||
Datasheet: Publicly available at the Maxim website
|
||||
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3500
|
||||
|
||||
|
||||
Author: Jean Delvare <khali@linux-fr.org>
|
||||
|
@ -1469,8 +1469,6 @@ L: linux-acpi@vger.kernel.org
|
||||
S: Supported
|
||||
|
||||
DOCUMENTATION (/Documentation directory)
|
||||
P: Michael Kerrisk
|
||||
M: mtk.manpages@gmail.com
|
||||
P: Randy Dunlap
|
||||
M: rdunlap@xenotime.net
|
||||
L: linux-doc@vger.kernel.org
|
||||
@ -2879,7 +2877,7 @@ P: Michael Kerrisk
|
||||
M: mtk.manpages@gmail.com
|
||||
W: http://www.kernel.org/doc/man-pages
|
||||
L: linux-man@vger.kernel.org
|
||||
S: Supported
|
||||
S: Maintained
|
||||
|
||||
MARVELL LIBERTAS WIRELESS DRIVER
|
||||
P: Dan Williams
|
||||
|
20
Makefile
20
Makefile
@ -1,7 +1,7 @@
|
||||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 29
|
||||
EXTRAVERSION = -rc7
|
||||
EXTRAVERSION = -rc8
|
||||
NAME = Erotic Pickled Herring
|
||||
|
||||
# *DOCUMENTATION*
|
||||
@ -905,12 +905,18 @@ localver = $(subst $(space),, $(string) \
|
||||
# and if the SCM is know a tag from the SCM is appended.
|
||||
# The appended tag is determined by the SCM used.
|
||||
#
|
||||
# Currently, only git is supported.
|
||||
# Other SCMs can edit scripts/setlocalversion and add the appropriate
|
||||
# checks as needed.
|
||||
# .scmversion is used when generating rpm packages so we do not loose
|
||||
# the version information from the SCM when we do the build of the kernel
|
||||
# from the copied source
|
||||
ifdef CONFIG_LOCALVERSION_AUTO
|
||||
_localver-auto = $(shell $(CONFIG_SHELL) \
|
||||
$(srctree)/scripts/setlocalversion $(srctree))
|
||||
|
||||
ifeq ($(wildcard .scmversion),)
|
||||
_localver-auto = $(shell $(CONFIG_SHELL) \
|
||||
$(srctree)/scripts/setlocalversion $(srctree))
|
||||
else
|
||||
_localver-auto = $(shell cat .scmversion 2> /dev/null)
|
||||
endif
|
||||
|
||||
localver-auto = $(LOCALVERSION)$(_localver-auto)
|
||||
endif
|
||||
|
||||
@ -1538,7 +1544,7 @@ quiet_cmd_depmod = DEPMOD $(KERNELRELEASE)
|
||||
cmd_depmod = \
|
||||
if [ -r System.map -a -x $(DEPMOD) ]; then \
|
||||
$(DEPMOD) -ae -F System.map \
|
||||
$(if $(strip $(INSTALL_MOD_PATH)), -b $(INSTALL_MOD_PATH) -r) \
|
||||
$(if $(strip $(INSTALL_MOD_PATH)), -b $(INSTALL_MOD_PATH) ) \
|
||||
$(KERNELRELEASE); \
|
||||
fi
|
||||
|
||||
|
@ -512,7 +512,7 @@ CONFIG_MD_LINEAR=m
|
||||
CONFIG_MD_RAID0=y
|
||||
CONFIG_MD_RAID1=y
|
||||
CONFIG_MD_RAID10=m
|
||||
CONFIG_MD_RAID456=m
|
||||
CONFIG_MD_RAID456=y
|
||||
CONFIG_MD_RAID5_RESHAPE=y
|
||||
CONFIG_MD_MULTIPATH=m
|
||||
CONFIG_MD_FAULTY=m
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.26-rc9
|
||||
# Fri Jul 11 23:01:36 2008
|
||||
# Linux kernel version: 2.6.29-rc7
|
||||
# Wed Mar 4 23:07:16 2009
|
||||
#
|
||||
CONFIG_MIPS=y
|
||||
|
||||
@ -18,8 +18,10 @@ CONFIG_MIPS=y
|
||||
# CONFIG_LEMOTE_FULONG is not set
|
||||
# CONFIG_MIPS_MALTA is not set
|
||||
# CONFIG_MIPS_SIM is not set
|
||||
# CONFIG_MARKEINS is not set
|
||||
# CONFIG_MACH_EMMA is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_NXP_STB220 is not set
|
||||
# CONFIG_NXP_STB225 is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_PNX8550_STB810 is not set
|
||||
# CONFIG_PMC_MSP is not set
|
||||
@ -39,7 +41,11 @@ CONFIG_MIPS=y
|
||||
# CONFIG_SNI_RM is not set
|
||||
CONFIG_MACH_TX39XX=y
|
||||
# CONFIG_MACH_TX49XX is not set
|
||||
# CONFIG_MIKROTIK_RB532 is not set
|
||||
# CONFIG_WR_PPMC is not set
|
||||
# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
|
||||
# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
|
||||
CONFIG_MACH_TXX9=y
|
||||
CONFIG_TOSHIBA_JMR3927=y
|
||||
CONFIG_SOC_TX3927=y
|
||||
# CONFIG_TOSHIBA_FPCIB0 is not set
|
||||
@ -54,12 +60,14 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_TIME=y
|
||||
CONFIG_GENERIC_CMOS_UPDATE=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_SCHED_OMIT_FRAME_POINTER=y
|
||||
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
|
||||
CONFIG_CEVT_TXX9=y
|
||||
CONFIG_GPIO_TXX9=y
|
||||
CONFIG_DMA_NONCOHERENT=y
|
||||
CONFIG_DMA_NEED_PCI_MAP_STATE=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_SYS_HAS_EARLY_PRINTK=y
|
||||
# CONFIG_HOTPLUG_CPU is not set
|
||||
# CONFIG_NO_IOPORT is not set
|
||||
CONFIG_GENERIC_GPIO=y
|
||||
@ -87,6 +95,7 @@ CONFIG_CPU_TX39XX=y
|
||||
# CONFIG_CPU_TX49XX is not set
|
||||
# CONFIG_CPU_R5000 is not set
|
||||
# CONFIG_CPU_R5432 is not set
|
||||
# CONFIG_CPU_R5500 is not set
|
||||
# CONFIG_CPU_R6000 is not set
|
||||
# CONFIG_CPU_NEVADA is not set
|
||||
# CONFIG_CPU_R8000 is not set
|
||||
@ -94,6 +103,7 @@ CONFIG_CPU_TX39XX=y
|
||||
# CONFIG_CPU_RM7000 is not set
|
||||
# CONFIG_CPU_RM9000 is not set
|
||||
# CONFIG_CPU_SB1 is not set
|
||||
# CONFIG_CPU_CAVIUM_OCTEON is not set
|
||||
CONFIG_SYS_HAS_CPU_TX39XX=y
|
||||
CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
|
||||
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
||||
@ -117,14 +127,12 @@ CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
|
||||
CONFIG_PAGEFLAGS_EXTENDED=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=0
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
# CONFIG_TICK_ONESHOT is not set
|
||||
CONFIG_UNEVICTABLE_LRU=y
|
||||
# CONFIG_NO_HZ is not set
|
||||
# CONFIG_HIGH_RES_TIMERS is not set
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
|
||||
@ -159,6 +167,15 @@ CONFIG_SYSVIPC_SYSCTL=y
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
|
||||
#
|
||||
# RCU Subsystem
|
||||
#
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_TREE_RCU is not set
|
||||
# CONFIG_PREEMPT_RCU 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=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
@ -171,7 +188,6 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_SYSCTL_SYSCALL=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
# CONFIG_HOTPLUG is not set
|
||||
@ -188,26 +204,23 @@ CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_AIO=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_PCI_QUIRKS=y
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_SLUB is not set
|
||||
# CONFIG_SLOB is not set
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
# CONFIG_HAVE_KPROBES is not set
|
||||
# CONFIG_HAVE_KRETPROBES is not set
|
||||
# CONFIG_HAVE_DMA_ATTRS is not set
|
||||
CONFIG_PROC_PAGE_MONITOR=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 is not set
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_LSF is not set
|
||||
# CONFIG_BLK_DEV_INTEGRITY is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
@ -221,7 +234,7 @@ CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_FREEZER is not set
|
||||
|
||||
#
|
||||
# Bus options (PCI, PCMCIA, EISA, ISA, TC)
|
||||
@ -231,12 +244,15 @@ CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
# CONFIG_ARCH_SUPPORTS_MSI is not set
|
||||
CONFIG_PCI_LEGACY=y
|
||||
# CONFIG_PCI_STUB is not set
|
||||
CONFIG_MMU=y
|
||||
|
||||
#
|
||||
# Executable file formats
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
# CONFIG_HAVE_AOUT is not set
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_TRAD_SIGNALS=y
|
||||
|
||||
@ -245,15 +261,12 @@ CONFIG_TRAD_SIGNALS=y
|
||||
#
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
# CONFIG_PM is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_COMPAT_NET_DEV_OPS=y
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
CONFIG_UNIX=y
|
||||
@ -293,6 +306,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_DCB is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
@ -302,14 +316,9 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_CAN is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
|
||||
#
|
||||
# Wireless
|
||||
#
|
||||
# CONFIG_CFG80211 is not set
|
||||
# CONFIG_WIRELESS_EXT is not set
|
||||
# CONFIG_MAC80211 is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
# CONFIG_PHONET is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
# CONFIG_WIMAX is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
|
||||
#
|
||||
@ -323,7 +332,89 @@ CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
# CONFIG_CONNECTOR is not set
|
||||
# CONFIG_MTD is not set
|
||||
CONFIG_MTD=y
|
||||
# CONFIG_MTD_DEBUG is not set
|
||||
# CONFIG_MTD_CONCAT is not set
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
# CONFIG_MTD_AR7_PARTS is not set
|
||||
|
||||
#
|
||||
# User Modules And Translation Layers
|
||||
#
|
||||
CONFIG_MTD_CHAR=y
|
||||
# CONFIG_MTD_BLKDEVS is not set
|
||||
# CONFIG_MTD_BLOCK is not set
|
||||
# CONFIG_MTD_BLOCK_RO is not set
|
||||
# CONFIG_FTL is not set
|
||||
# CONFIG_NFTL is not set
|
||||
# CONFIG_INFTL is not set
|
||||
# CONFIG_RFD_FTL is not set
|
||||
# CONFIG_SSFDC is not set
|
||||
# CONFIG_MTD_OOPS is not set
|
||||
|
||||
#
|
||||
# RAM/ROM/Flash chip drivers
|
||||
#
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_JEDECPROBE=y
|
||||
CONFIG_MTD_GEN_PROBE=y
|
||||
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
|
||||
CONFIG_MTD_CFI_I1=y
|
||||
CONFIG_MTD_CFI_I2=y
|
||||
# CONFIG_MTD_CFI_I4 is not set
|
||||
# CONFIG_MTD_CFI_I8 is not set
|
||||
# CONFIG_MTD_CFI_INTELEXT is not set
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
# CONFIG_MTD_CFI_STAA is not set
|
||||
CONFIG_MTD_CFI_UTIL=y
|
||||
# CONFIG_MTD_RAM is not set
|
||||
# CONFIG_MTD_ROM is not set
|
||||
# CONFIG_MTD_ABSENT is not set
|
||||
|
||||
#
|
||||
# Mapping drivers for chip access
|
||||
#
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
# CONFIG_MTD_PHYSMAP_COMPAT is not set
|
||||
# CONFIG_MTD_INTEL_VR_NOR is not set
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
||||
#
|
||||
# Self-contained MTD device drivers
|
||||
#
|
||||
# CONFIG_MTD_PMC551 is not set
|
||||
# CONFIG_MTD_SLRAM is not set
|
||||
# CONFIG_MTD_PHRAM is not set
|
||||
# CONFIG_MTD_MTDRAM is not set
|
||||
# CONFIG_MTD_BLOCK2MTD is not set
|
||||
|
||||
#
|
||||
# Disk-On-Chip Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_DOC2000 is not set
|
||||
# CONFIG_MTD_DOC2001 is not set
|
||||
# CONFIG_MTD_DOC2001PLUS is not set
|
||||
# CONFIG_MTD_NAND is not set
|
||||
# CONFIG_MTD_ONENAND is not set
|
||||
|
||||
#
|
||||
# LPDDR flash memory drivers
|
||||
#
|
||||
# CONFIG_MTD_LPDDR is not set
|
||||
|
||||
#
|
||||
# UBI - Unsorted block images
|
||||
#
|
||||
# CONFIG_MTD_UBI is not set
|
||||
# CONFIG_PARPORT is not set
|
||||
CONFIG_BLK_DEV=y
|
||||
# CONFIG_BLK_CPQ_DA is not set
|
||||
@ -336,6 +427,7 @@ CONFIG_BLK_DEV=y
|
||||
# CONFIG_BLK_DEV_RAM is not set
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
# CONFIG_BLK_DEV_HD is not set
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_HAVE_IDE=y
|
||||
# CONFIG_IDE is not set
|
||||
@ -361,7 +453,6 @@ CONFIG_HAVE_IDE=y
|
||||
# CONFIG_IEEE1394 is not set
|
||||
# CONFIG_I2O is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_NETDEVICES_MULTIQUEUE is not set
|
||||
# CONFIG_DUMMY is not set
|
||||
# CONFIG_BONDING is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
@ -383,6 +474,9 @@ CONFIG_PHYLIB=y
|
||||
# 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
|
||||
@ -392,6 +486,7 @@ CONFIG_NET_ETHERNET=y
|
||||
# CONFIG_SUNGEM is not set
|
||||
# CONFIG_CASSINI is not set
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
# CONFIG_SMC91X is not set
|
||||
# CONFIG_DM9000 is not set
|
||||
# CONFIG_NET_TULIP is not set
|
||||
# CONFIG_HP100 is not set
|
||||
@ -399,6 +494,9 @@ CONFIG_NET_ETHERNET=y
|
||||
# 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
|
||||
@ -406,7 +504,6 @@ CONFIG_NET_PCI=y
|
||||
# CONFIG_B44 is not set
|
||||
# CONFIG_FORCEDETH is not set
|
||||
CONFIG_TC35815=y
|
||||
# CONFIG_EEPRO100 is not set
|
||||
# CONFIG_E100 is not set
|
||||
# CONFIG_FEALNX is not set
|
||||
# CONFIG_NATSEMI is not set
|
||||
@ -415,9 +512,11 @@ CONFIG_TC35815=y
|
||||
# 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_ATL2 is not set
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_TR is not set
|
||||
@ -428,6 +527,10 @@ CONFIG_TC35815=y
|
||||
# CONFIG_WLAN_PRE80211 is not set
|
||||
# CONFIG_WLAN_80211 is not set
|
||||
# CONFIG_IWLWIFI_LEDS is not set
|
||||
|
||||
#
|
||||
# Enable WiMAX (Networking options) to see the WiMAX drivers
|
||||
#
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_FDDI is not set
|
||||
# CONFIG_PPP is not set
|
||||
@ -440,27 +543,7 @@ CONFIG_TC35815=y
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
CONFIG_INPUT=y
|
||||
# CONFIG_INPUT_FF_MEMLESS is not set
|
||||
# CONFIG_INPUT_POLLDEV is not set
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
#
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_JOYDEV is not set
|
||||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_INPUT_JOYSTICK is not set
|
||||
# CONFIG_INPUT_TABLET is not set
|
||||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
# CONFIG_INPUT is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
@ -517,16 +600,22 @@ CONFIG_LEGACY_PTY_COUNT=256
|
||||
CONFIG_DEVPORT=y
|
||||
# CONFIG_I2C is not set
|
||||
# CONFIG_SPI is not set
|
||||
CONFIG_HAVE_GPIO_LIB=y
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
CONFIG_GPIOLIB=y
|
||||
|
||||
#
|
||||
# GPIO Support
|
||||
# Memory mapped GPIO expanders:
|
||||
#
|
||||
|
||||
#
|
||||
# I2C GPIO expanders:
|
||||
#
|
||||
|
||||
#
|
||||
# PCI GPIO expanders:
|
||||
#
|
||||
# CONFIG_GPIO_BT8XX is not set
|
||||
|
||||
#
|
||||
# SPI GPIO expanders:
|
||||
#
|
||||
@ -542,6 +631,7 @@ CONFIG_WATCHDOG=y
|
||||
# Watchdog Device Drivers
|
||||
#
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
# CONFIG_ALIM7101_WDT is not set
|
||||
CONFIG_TXX9_WDT=y
|
||||
|
||||
#
|
||||
@ -549,18 +639,21 @@ CONFIG_TXX9_WDT=y
|
||||
#
|
||||
# CONFIG_PCIPCWATCHDOG is not set
|
||||
# CONFIG_WDTPCI is not set
|
||||
CONFIG_SSB_POSSIBLE=y
|
||||
|
||||
#
|
||||
# Sonics Silicon Backplane
|
||||
#
|
||||
CONFIG_SSB_POSSIBLE=y
|
||||
# CONFIG_SSB is not set
|
||||
|
||||
#
|
||||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_CORE is not set
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_HTC_PASIC3 is not set
|
||||
# CONFIG_MFD_TMIO is not set
|
||||
# CONFIG_REGULATOR is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
@ -591,16 +684,26 @@ CONFIG_SSB_POSSIBLE=y
|
||||
# Display device support
|
||||
#
|
||||
# CONFIG_DISPLAY_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Sound
|
||||
#
|
||||
# CONFIG_SOUND is not set
|
||||
# CONFIG_HID_SUPPORT is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_MEMSTICK is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
|
||||
#
|
||||
# LED drivers
|
||||
#
|
||||
CONFIG_LEDS_GPIO=y
|
||||
|
||||
#
|
||||
# LED Triggers
|
||||
#
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
# CONFIG_LEDS_TRIGGER_TIMER is not set
|
||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
||||
# 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
|
||||
CONFIG_RTC_LIB=y
|
||||
@ -626,27 +729,34 @@ CONFIG_RTC_INTF_DEV=y
|
||||
# Platform RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_CMOS is not set
|
||||
# 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=y
|
||||
# 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
|
||||
|
||||
#
|
||||
# on-CPU RTC drivers
|
||||
#
|
||||
# CONFIG_DMADEVICES is not set
|
||||
# CONFIG_UIO is not set
|
||||
# CONFIG_STAGING is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
# CONFIG_EXT2_FS is not set
|
||||
# CONFIG_EXT3_FS is not set
|
||||
# CONFIG_EXT4_FS is not set
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
# CONFIG_FS_POSIX_ACL is not set
|
||||
CONFIG_FILE_LOCKING=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
@ -676,28 +786,17 @@ CONFIG_INOTIFY_USER=y
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
CONFIG_SYSFS=y
|
||||
# CONFIG_TMPFS is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
#
|
||||
# CONFIG_HFSPLUS_FS is not set
|
||||
# CONFIG_CRAMFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
# CONFIG_MISC_FILESYSTEMS is not set
|
||||
CONFIG_NETWORK_FILESYSTEMS=y
|
||||
CONFIG_NFS_FS=y
|
||||
# CONFIG_NFS_V3 is not set
|
||||
# CONFIG_NFSD is not set
|
||||
CONFIG_ROOT_NFS=y
|
||||
# CONFIG_NFSD is not set
|
||||
CONFIG_LOCKD=y
|
||||
CONFIG_NFS_COMMON=y
|
||||
CONFIG_SUNRPC=y
|
||||
@ -726,7 +825,16 @@ CONFIG_FRAME_WARN=1024
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
|
||||
#
|
||||
# Tracers
|
||||
#
|
||||
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
CONFIG_CMDLINE=""
|
||||
|
||||
#
|
||||
@ -734,15 +842,18 @@ CONFIG_CMDLINE=""
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
# CONFIG_SECURITYFS is not set
|
||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
# CONFIG_GENERIC_FIND_FIRST_BIT is not set
|
||||
CONFIG_GENERIC_FIND_LAST_BIT=y
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
# CONFIG_CRC_T10DIF is not set
|
||||
# CONFIG_CRC_ITU_T is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_CRC7 is not set
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.26-rc9
|
||||
# Fri Jul 11 23:03:21 2008
|
||||
# Linux kernel version: 2.6.29-rc7
|
||||
# Wed Mar 4 23:08:06 2009
|
||||
#
|
||||
CONFIG_MIPS=y
|
||||
|
||||
@ -18,8 +18,10 @@ CONFIG_MIPS=y
|
||||
# CONFIG_LEMOTE_FULONG is not set
|
||||
# CONFIG_MIPS_MALTA is not set
|
||||
# CONFIG_MIPS_SIM is not set
|
||||
# CONFIG_MARKEINS is not set
|
||||
# CONFIG_MACH_EMMA is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_NXP_STB220 is not set
|
||||
# CONFIG_NXP_STB225 is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_PNX8550_STB810 is not set
|
||||
# CONFIG_PMC_MSP is not set
|
||||
@ -39,20 +41,28 @@ CONFIG_MIPS=y
|
||||
# CONFIG_SNI_RM is not set
|
||||
# CONFIG_MACH_TX39XX is not set
|
||||
CONFIG_MACH_TX49XX=y
|
||||
# CONFIG_MIKROTIK_RB532 is not set
|
||||
# CONFIG_WR_PPMC is not set
|
||||
# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
|
||||
# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
|
||||
CONFIG_MACH_TXX9=y
|
||||
CONFIG_TOSHIBA_RBTX4927=y
|
||||
CONFIG_TOSHIBA_RBTX4938=y
|
||||
CONFIG_TOSHIBA_RBTX4939=y
|
||||
CONFIG_SOC_TX4927=y
|
||||
CONFIG_SOC_TX4938=y
|
||||
CONFIG_SOC_TX4939=y
|
||||
CONFIG_TXX9_7SEGLED=y
|
||||
# CONFIG_TOSHIBA_FPCIB0 is not set
|
||||
CONFIG_PICMG_PCI_BACKPLANE_DEFAULT=y
|
||||
|
||||
#
|
||||
# Multiplex Pin Select
|
||||
#
|
||||
CONFIG_TOSHIBA_RBTX4938_MPLEX_PIO58_61=y
|
||||
# CONFIG_TOSHIBA_RBTX4938_MPLEX_PIO58_61 is not set
|
||||
# CONFIG_TOSHIBA_RBTX4938_MPLEX_NAND is not set
|
||||
# CONFIG_TOSHIBA_RBTX4938_MPLEX_ATA is not set
|
||||
CONFIG_TOSHIBA_RBTX4938_MPLEX_KEEP=y
|
||||
CONFIG_PCI_TX4927=y
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
|
||||
@ -64,14 +74,18 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_TIME=y
|
||||
CONFIG_GENERIC_CMOS_UPDATE=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_SCHED_OMIT_FRAME_POINTER=y
|
||||
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
|
||||
CONFIG_CEVT_R4K_LIB=y
|
||||
CONFIG_CEVT_R4K=y
|
||||
CONFIG_CEVT_TXX9=y
|
||||
CONFIG_CSRC_R4K_LIB=y
|
||||
CONFIG_CSRC_R4K=y
|
||||
CONFIG_GPIO_TXX9=y
|
||||
CONFIG_DMA_NONCOHERENT=y
|
||||
CONFIG_DMA_NEED_PCI_MAP_STATE=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_SYS_HAS_EARLY_PRINTK=y
|
||||
# CONFIG_HOTPLUG_CPU is not set
|
||||
# CONFIG_NO_IOPORT is not set
|
||||
CONFIG_GENERIC_GPIO=y
|
||||
@ -100,6 +114,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
|
||||
CONFIG_CPU_TX49XX=y
|
||||
# CONFIG_CPU_R5000 is not set
|
||||
# CONFIG_CPU_R5432 is not set
|
||||
# CONFIG_CPU_R5500 is not set
|
||||
# CONFIG_CPU_R6000 is not set
|
||||
# CONFIG_CPU_NEVADA is not set
|
||||
# CONFIG_CPU_R8000 is not set
|
||||
@ -107,6 +122,7 @@ CONFIG_CPU_TX49XX=y
|
||||
# CONFIG_CPU_RM7000 is not set
|
||||
# CONFIG_CPU_RM9000 is not set
|
||||
# CONFIG_CPU_SB1 is not set
|
||||
# CONFIG_CPU_CAVIUM_OCTEON is not set
|
||||
CONFIG_SYS_HAS_CPU_TX49XX=y
|
||||
CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
|
||||
CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
|
||||
@ -134,13 +150,12 @@ CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
|
||||
CONFIG_PAGEFLAGS_EXTENDED=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=0
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
CONFIG_UNEVICTABLE_LRU=y
|
||||
CONFIG_TICK_ONESHOT=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
@ -176,6 +191,15 @@ CONFIG_SYSVIPC_SYSCTL=y
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
|
||||
#
|
||||
# RCU Subsystem
|
||||
#
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_TREE_RCU is not set
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
# CONFIG_TREE_RCU_TRACE is not set
|
||||
# CONFIG_PREEMPT_RCU_TRACE is not set
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
@ -190,7 +214,6 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_SYSCTL_SYSCALL=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
# CONFIG_HOTPLUG is not set
|
||||
@ -207,30 +230,26 @@ CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_AIO=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_PCI_QUIRKS=y
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_SLUB is not set
|
||||
# CONFIG_SLOB is not set
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
# CONFIG_HAVE_KPROBES is not set
|
||||
# CONFIG_HAVE_KRETPROBES is not set
|
||||
# CONFIG_HAVE_DMA_ATTRS is not set
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
|
||||
CONFIG_SLABINFO=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
CONFIG_MODULES=y
|
||||
# CONFIG_MODULE_FORCE_LOAD is not set
|
||||
# CONFIG_MODULE_UNLOAD is not set
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_MODVERSIONS is not set
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
CONFIG_KMOD=y
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_LSF is not set
|
||||
# CONFIG_BLK_DEV_INTEGRITY is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
@ -244,7 +263,8 @@ CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_PROBE_INITRD_HEADER is not set
|
||||
# CONFIG_FREEZER is not set
|
||||
|
||||
#
|
||||
# Bus options (PCI, PCMCIA, EISA, ISA, TC)
|
||||
@ -254,12 +274,15 @@ CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
# CONFIG_ARCH_SUPPORTS_MSI is not set
|
||||
# CONFIG_PCI_LEGACY is not set
|
||||
# CONFIG_PCI_STUB is not set
|
||||
CONFIG_MMU=y
|
||||
|
||||
#
|
||||
# Executable file formats
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
# CONFIG_HAVE_AOUT is not set
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_TRAD_SIGNALS=y
|
||||
|
||||
@ -268,15 +291,12 @@ CONFIG_TRAD_SIGNALS=y
|
||||
#
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
# CONFIG_PM is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_COMPAT_NET_DEV_OPS=y
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
CONFIG_UNIX=y
|
||||
@ -318,6 +338,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_DCB is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
@ -327,14 +348,9 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_CAN is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
|
||||
#
|
||||
# Wireless
|
||||
#
|
||||
# CONFIG_CFG80211 is not set
|
||||
# CONFIG_WIRELESS_EXT is not set
|
||||
# CONFIG_MAC80211 is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
# CONFIG_PHONET is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
# CONFIG_WIMAX is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
|
||||
#
|
||||
@ -348,7 +364,90 @@ CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
# CONFIG_CONNECTOR is not set
|
||||
# CONFIG_MTD is not set
|
||||
CONFIG_MTD=y
|
||||
# CONFIG_MTD_DEBUG is not set
|
||||
# CONFIG_MTD_CONCAT is not set
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
# CONFIG_MTD_TESTS is not set
|
||||
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
# CONFIG_MTD_AR7_PARTS is not set
|
||||
|
||||
#
|
||||
# User Modules And Translation Layers
|
||||
#
|
||||
CONFIG_MTD_CHAR=y
|
||||
# CONFIG_MTD_BLKDEVS is not set
|
||||
# CONFIG_MTD_BLOCK is not set
|
||||
# CONFIG_MTD_BLOCK_RO is not set
|
||||
# CONFIG_FTL is not set
|
||||
# CONFIG_NFTL is not set
|
||||
# CONFIG_INFTL is not set
|
||||
# CONFIG_RFD_FTL is not set
|
||||
# CONFIG_SSFDC is not set
|
||||
# CONFIG_MTD_OOPS is not set
|
||||
|
||||
#
|
||||
# RAM/ROM/Flash chip drivers
|
||||
#
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_JEDECPROBE=y
|
||||
CONFIG_MTD_GEN_PROBE=y
|
||||
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
|
||||
CONFIG_MTD_CFI_I1=y
|
||||
CONFIG_MTD_CFI_I2=y
|
||||
# CONFIG_MTD_CFI_I4 is not set
|
||||
# CONFIG_MTD_CFI_I8 is not set
|
||||
# CONFIG_MTD_CFI_INTELEXT is not set
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
# CONFIG_MTD_CFI_STAA is not set
|
||||
CONFIG_MTD_CFI_UTIL=y
|
||||
# CONFIG_MTD_RAM is not set
|
||||
# CONFIG_MTD_ROM is not set
|
||||
# CONFIG_MTD_ABSENT is not set
|
||||
|
||||
#
|
||||
# Mapping drivers for chip access
|
||||
#
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
# CONFIG_MTD_PHYSMAP_COMPAT is not set
|
||||
# CONFIG_MTD_INTEL_VR_NOR is not set
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
||||
#
|
||||
# Self-contained MTD device drivers
|
||||
#
|
||||
# CONFIG_MTD_PMC551 is not set
|
||||
# CONFIG_MTD_SLRAM is not set
|
||||
# CONFIG_MTD_PHRAM is not set
|
||||
# CONFIG_MTD_MTDRAM is not set
|
||||
# CONFIG_MTD_BLOCK2MTD is not set
|
||||
|
||||
#
|
||||
# Disk-On-Chip Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_DOC2000 is not set
|
||||
# CONFIG_MTD_DOC2001 is not set
|
||||
# CONFIG_MTD_DOC2001PLUS is not set
|
||||
# CONFIG_MTD_NAND is not set
|
||||
# CONFIG_MTD_ONENAND is not set
|
||||
|
||||
#
|
||||
# LPDDR flash memory drivers
|
||||
#
|
||||
# CONFIG_MTD_LPDDR is not set
|
||||
|
||||
#
|
||||
# UBI - Unsorted block images
|
||||
#
|
||||
# CONFIG_MTD_UBI is not set
|
||||
# CONFIG_PARPORT is not set
|
||||
CONFIG_BLK_DEV=y
|
||||
# CONFIG_BLK_CPQ_DA is not set
|
||||
@ -365,9 +464,60 @@ CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
# CONFIG_BLK_DEV_XIP is not set
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
# CONFIG_BLK_DEV_HD is not set
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_HAVE_IDE=y
|
||||
# CONFIG_IDE is not set
|
||||
CONFIG_IDE=y
|
||||
|
||||
#
|
||||
# Please see Documentation/ide/ide.txt for help/info on IDE drives
|
||||
#
|
||||
CONFIG_IDE_TIMINGS=y
|
||||
# CONFIG_BLK_DEV_IDE_SATA is not set
|
||||
CONFIG_IDE_GD=y
|
||||
CONFIG_IDE_GD_ATA=y
|
||||
# CONFIG_IDE_GD_ATAPI is not set
|
||||
# CONFIG_BLK_DEV_IDECD is not set
|
||||
# CONFIG_BLK_DEV_IDETAPE is not set
|
||||
# CONFIG_IDE_TASK_IOCTL is not set
|
||||
CONFIG_IDE_PROC_FS=y
|
||||
|
||||
#
|
||||
# IDE chipset support/bugfixes
|
||||
#
|
||||
# CONFIG_IDE_GENERIC is not set
|
||||
# CONFIG_BLK_DEV_PLATFORM is not set
|
||||
CONFIG_BLK_DEV_IDEDMA_SFF=y
|
||||
|
||||
#
|
||||
# PCI IDE chipsets support
|
||||
#
|
||||
# CONFIG_BLK_DEV_GENERIC is not set
|
||||
# CONFIG_BLK_DEV_AEC62XX is not set
|
||||
# CONFIG_BLK_DEV_ALI15X3 is not set
|
||||
# CONFIG_BLK_DEV_AMD74XX is not set
|
||||
# CONFIG_BLK_DEV_CMD64X is not set
|
||||
# CONFIG_BLK_DEV_TRIFLEX is not set
|
||||
# CONFIG_BLK_DEV_CS5530 is not set
|
||||
# CONFIG_BLK_DEV_HPT366 is not set
|
||||
# CONFIG_BLK_DEV_JMICRON is not set
|
||||
# CONFIG_BLK_DEV_SC1200 is not set
|
||||
# CONFIG_BLK_DEV_PIIX is not set
|
||||
# CONFIG_BLK_DEV_IT8172 is not set
|
||||
# CONFIG_BLK_DEV_IT8213 is not set
|
||||
# CONFIG_BLK_DEV_IT821X is not set
|
||||
# CONFIG_BLK_DEV_NS87415 is not set
|
||||
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
|
||||
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
|
||||
# CONFIG_BLK_DEV_SVWKS is not set
|
||||
# CONFIG_BLK_DEV_SIIMAGE is not set
|
||||
# CONFIG_BLK_DEV_SLC90E66 is not set
|
||||
# CONFIG_BLK_DEV_TRM290 is not set
|
||||
# CONFIG_BLK_DEV_VIA82CXXX is not set
|
||||
# CONFIG_BLK_DEV_TC86C001 is not set
|
||||
CONFIG_BLK_DEV_IDE_TX4938=y
|
||||
CONFIG_BLK_DEV_IDE_TX4939=y
|
||||
CONFIG_BLK_DEV_IDEDMA=y
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
@ -390,7 +540,6 @@ CONFIG_HAVE_IDE=y
|
||||
# CONFIG_IEEE1394 is not set
|
||||
# CONFIG_I2O is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_NETDEVICES_MULTIQUEUE is not set
|
||||
# CONFIG_DUMMY is not set
|
||||
# CONFIG_BONDING is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
@ -412,15 +561,19 @@ CONFIG_PHYLIB=y
|
||||
# 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
|
||||
# CONFIG_MII is not set
|
||||
CONFIG_MII=y
|
||||
# CONFIG_AX88796 is not set
|
||||
# CONFIG_HAPPYMEAL is not set
|
||||
# CONFIG_SUNGEM is not set
|
||||
# CONFIG_CASSINI is not set
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
CONFIG_SMC91X=y
|
||||
# CONFIG_DM9000 is not set
|
||||
# CONFIG_NET_TULIP is not set
|
||||
# CONFIG_HP100 is not set
|
||||
@ -429,6 +582,9 @@ CONFIG_NE2000=y
|
||||
# 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
|
||||
@ -436,7 +592,6 @@ CONFIG_NET_PCI=y
|
||||
# CONFIG_B44 is not set
|
||||
# CONFIG_FORCEDETH is not set
|
||||
CONFIG_TC35815=y
|
||||
# CONFIG_EEPRO100 is not set
|
||||
# CONFIG_E100 is not set
|
||||
# CONFIG_FEALNX is not set
|
||||
# CONFIG_NATSEMI is not set
|
||||
@ -445,9 +600,11 @@ CONFIG_TC35815=y
|
||||
# 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_ATL2 is not set
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_TR is not set
|
||||
@ -458,6 +615,10 @@ CONFIG_TC35815=y
|
||||
# CONFIG_WLAN_PRE80211 is not set
|
||||
# CONFIG_WLAN_80211 is not set
|
||||
# CONFIG_IWLWIFI_LEDS is not set
|
||||
|
||||
#
|
||||
# Enable WiMAX (Networking options) to see the WiMAX drivers
|
||||
#
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_FDDI is not set
|
||||
# CONFIG_PPP is not set
|
||||
@ -502,6 +663,7 @@ CONFIG_SERIAL_TXX9_CONSOLE=y
|
||||
CONFIG_SERIAL_TXX9_STDSERIAL=y
|
||||
# CONFIG_SERIAL_JSM is not set
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
@ -517,26 +679,34 @@ CONFIG_SPI_MASTER=y
|
||||
#
|
||||
# SPI Master Controller Drivers
|
||||
#
|
||||
# CONFIG_SPI_BITBANG is not set
|
||||
# CONFIG_SPI_GPIO is not set
|
||||
CONFIG_SPI_TXX9=y
|
||||
|
||||
#
|
||||
# SPI Protocol Masters
|
||||
#
|
||||
CONFIG_EEPROM_AT25=y
|
||||
# CONFIG_SPI_TLE62X0 is not set
|
||||
CONFIG_HAVE_GPIO_LIB=y
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
CONFIG_GPIOLIB=y
|
||||
|
||||
#
|
||||
# GPIO Support
|
||||
# Memory mapped GPIO expanders:
|
||||
#
|
||||
|
||||
#
|
||||
# I2C GPIO expanders:
|
||||
#
|
||||
|
||||
#
|
||||
# PCI GPIO expanders:
|
||||
#
|
||||
# CONFIG_GPIO_BT8XX is not set
|
||||
|
||||
#
|
||||
# SPI GPIO expanders:
|
||||
#
|
||||
# CONFIG_GPIO_MAX7301 is not set
|
||||
# CONFIG_GPIO_MCP23S08 is not set
|
||||
# CONFIG_W1 is not set
|
||||
# CONFIG_POWER_SUPPLY is not set
|
||||
@ -550,6 +720,7 @@ CONFIG_WATCHDOG=y
|
||||
# Watchdog Device Drivers
|
||||
#
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
# CONFIG_ALIM7101_WDT is not set
|
||||
CONFIG_TXX9_WDT=m
|
||||
|
||||
#
|
||||
@ -557,18 +728,21 @@ CONFIG_TXX9_WDT=m
|
||||
#
|
||||
# CONFIG_PCIPCWATCHDOG is not set
|
||||
# CONFIG_WDTPCI is not set
|
||||
CONFIG_SSB_POSSIBLE=y
|
||||
|
||||
#
|
||||
# Sonics Silicon Backplane
|
||||
#
|
||||
CONFIG_SSB_POSSIBLE=y
|
||||
# CONFIG_SSB is not set
|
||||
|
||||
#
|
||||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_CORE is not set
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_HTC_PASIC3 is not set
|
||||
# CONFIG_MFD_TMIO is not set
|
||||
# CONFIG_REGULATOR is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
@ -599,15 +773,27 @@ CONFIG_SSB_POSSIBLE=y
|
||||
# Display device support
|
||||
#
|
||||
# CONFIG_DISPLAY_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Sound
|
||||
#
|
||||
# CONFIG_SOUND is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_MEMSTICK is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
|
||||
#
|
||||
# LED drivers
|
||||
#
|
||||
CONFIG_LEDS_GPIO=y
|
||||
|
||||
#
|
||||
# LED Triggers
|
||||
#
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
# CONFIG_LEDS_TRIGGER_TIMER is not set
|
||||
CONFIG_LEDS_TRIGGER_IDE_DISK=y
|
||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
||||
# 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
|
||||
CONFIG_RTC_LIB=y
|
||||
@ -628,35 +814,47 @@ CONFIG_RTC_INTF_DEV_UIE_EMUL=y
|
||||
#
|
||||
# SPI RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_M41T94 is not set
|
||||
# CONFIG_RTC_DRV_DS1305 is not set
|
||||
# CONFIG_RTC_DRV_DS1390 is not set
|
||||
# CONFIG_RTC_DRV_MAX6902 is not set
|
||||
# CONFIG_RTC_DRV_R9701 is not set
|
||||
CONFIG_RTC_DRV_RS5C348=y
|
||||
# CONFIG_RTC_DRV_DS3234 is not set
|
||||
|
||||
#
|
||||
# Platform RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_CMOS is not set
|
||||
# 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=y
|
||||
# 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
|
||||
|
||||
#
|
||||
# on-CPU RTC drivers
|
||||
#
|
||||
CONFIG_RTC_DRV_TX4939=y
|
||||
# CONFIG_DMADEVICES is not set
|
||||
# CONFIG_UIO is not set
|
||||
# CONFIG_STAGING is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
# CONFIG_EXT2_FS is not set
|
||||
# CONFIG_EXT3_FS is not set
|
||||
# CONFIG_EXT4_FS is not set
|
||||
# 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_DNOTIFY is not set
|
||||
@ -687,30 +885,19 @@ CONFIG_GENERIC_ACL=y
|
||||
CONFIG_PROC_FS=y
|
||||
# CONFIG_PROC_KCORE is not set
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
#
|
||||
# CONFIG_HFSPLUS_FS is not set
|
||||
# CONFIG_CRAMFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
# CONFIG_MISC_FILESYSTEMS is not set
|
||||
CONFIG_NETWORK_FILESYSTEMS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
# CONFIG_NFS_V3_ACL is not set
|
||||
# CONFIG_NFSD is not set
|
||||
CONFIG_ROOT_NFS=y
|
||||
# CONFIG_NFSD is not set
|
||||
CONFIG_LOCKD=y
|
||||
CONFIG_LOCKD_V4=y
|
||||
CONFIG_NFS_COMMON=y
|
||||
@ -740,7 +927,16 @@ CONFIG_FRAME_WARN=1024
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
|
||||
#
|
||||
# Tracers
|
||||
#
|
||||
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
CONFIG_CMDLINE=""
|
||||
|
||||
#
|
||||
@ -748,15 +944,18 @@ CONFIG_CMDLINE=""
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
# CONFIG_SECURITYFS is not set
|
||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
# CONFIG_GENERIC_FIND_FIRST_BIT is not set
|
||||
CONFIG_GENERIC_FIND_LAST_BIT=y
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
# CONFIG_CRC_T10DIF is not set
|
||||
# CONFIG_CRC_ITU_T is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_CRC7 is not set
|
||||
|
@ -138,7 +138,8 @@ do { \
|
||||
__instruction_hazard(); \
|
||||
} while (0)
|
||||
|
||||
#elif defined(CONFIG_CPU_R10000) || defined(CONFIG_CPU_CAVIUM_OCTEON)
|
||||
#elif defined(CONFIG_CPU_R10000) || defined(CONFIG_CPU_CAVIUM_OCTEON) || \
|
||||
defined(CONFIG_CPU_R5500)
|
||||
|
||||
/*
|
||||
* R10000 rocks - all hazards handled in hardware, so this becomes a nobrainer.
|
||||
|
@ -26,7 +26,7 @@
|
||||
* Pref_WriteBackInvalidate is a nop and Pref_PrepareForStore is broken in
|
||||
* current versions due to erratum G105.
|
||||
*
|
||||
* VR7701 only implements the Load prefetch.
|
||||
* VR5500 (including VR5701 and VR7701) only implement load prefetch.
|
||||
*
|
||||
* Finally MIPS32 and MIPS64 implement all of the following hints.
|
||||
*/
|
||||
|
@ -149,6 +149,7 @@ void __init check_wait(void)
|
||||
case CPU_R4650:
|
||||
case CPU_R4700:
|
||||
case CPU_R5000:
|
||||
case CPU_R5500:
|
||||
case CPU_NEVADA:
|
||||
case CPU_4KC:
|
||||
case CPU_4KEC:
|
||||
|
@ -235,7 +235,7 @@ SYSCALL_DEFINE6(32_ipc, u32, call, long, first, long, second, long, third,
|
||||
#else
|
||||
|
||||
SYSCALL_DEFINE6(32_ipc, u32, call, int, first, int, second, int, third,
|
||||
u32, ptr, u32 fifth)
|
||||
u32, ptr, u32, fifth)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
@ -172,8 +172,9 @@ static void __cpuinit set_prefetch_parameters(void)
|
||||
*/
|
||||
cache_line_size = cpu_dcache_line_size();
|
||||
switch (current_cpu_type()) {
|
||||
case CPU_R5500:
|
||||
case CPU_TX49XX:
|
||||
/* TX49 supports only Pref_Load */
|
||||
/* These processors only support the Pref_Load. */
|
||||
pref_bias_copy_load = 256;
|
||||
break;
|
||||
|
||||
|
@ -318,6 +318,7 @@ static void __cpuinit build_tlb_write_entry(u32 **p, struct uasm_label **l,
|
||||
case CPU_BCM4710:
|
||||
case CPU_LOONGSON2:
|
||||
case CPU_CAVIUM_OCTEON:
|
||||
case CPU_R5500:
|
||||
if (m4kc_tlbp_war())
|
||||
uasm_i_nop(p);
|
||||
tlbw(p);
|
||||
|
@ -324,17 +324,25 @@ static void sun4u_set_affinity(unsigned int virt_irq,
|
||||
sun4u_irq_enable(virt_irq);
|
||||
}
|
||||
|
||||
/* Don't do anything. The desc->status check for IRQ_DISABLED in
|
||||
* handler_irq() will skip the handler call and that will leave the
|
||||
* interrupt in the sent state. The next ->enable() call will hit the
|
||||
* ICLR register to reset the state machine.
|
||||
*
|
||||
* This scheme is necessary, instead of clearing the Valid bit in the
|
||||
* IMAP register, to handle the case of IMAP registers being shared by
|
||||
* multiple INOs (and thus ICLR registers). Since we use a different
|
||||
* virtual IRQ for each shared IMAP instance, the generic code thinks
|
||||
* there is only one user so it prematurely calls ->disable() on
|
||||
* free_irq().
|
||||
*
|
||||
* We have to provide an explicit ->disable() method instead of using
|
||||
* NULL to get the default. The reason is that if the generic code
|
||||
* sees that, it also hooks up a default ->shutdown method which
|
||||
* invokes ->mask() which we do not want. See irq_chip_set_defaults().
|
||||
*/
|
||||
static void sun4u_irq_disable(unsigned int virt_irq)
|
||||
{
|
||||
struct irq_handler_data *data = get_irq_chip_data(virt_irq);
|
||||
|
||||
if (likely(data)) {
|
||||
unsigned long imap = data->imap;
|
||||
unsigned long tmp = upa_readq(imap);
|
||||
|
||||
tmp &= ~IMAP_VALID;
|
||||
upa_writeq(tmp, imap);
|
||||
}
|
||||
}
|
||||
|
||||
static void sun4u_irq_eoi(unsigned int virt_irq)
|
||||
@ -747,7 +755,8 @@ void handler_irq(int irq, struct pt_regs *regs)
|
||||
|
||||
desc = irq_desc + virt_irq;
|
||||
|
||||
desc->handle_irq(virt_irq, desc);
|
||||
if (!(desc->status & IRQ_DISABLED))
|
||||
desc->handle_irq(virt_irq, desc);
|
||||
|
||||
bucket_pa = next_pa;
|
||||
}
|
||||
|
@ -64,6 +64,11 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
||||
ret = poke_user(child, addr, data);
|
||||
break;
|
||||
|
||||
case PTRACE_SYSEMU:
|
||||
case PTRACE_SYSEMU_SINGLESTEP:
|
||||
ret = -EIO;
|
||||
break;
|
||||
|
||||
/* continue and stop at next (return from) syscall */
|
||||
case PTRACE_SYSCALL:
|
||||
/* restart after signal. */
|
||||
|
@ -14,7 +14,6 @@
|
||||
#undef memset
|
||||
|
||||
extern size_t strlen(const char *);
|
||||
extern void *memcpy(void *, const void *, size_t);
|
||||
extern void *memmove(void *, const void *, size_t);
|
||||
extern void *memset(void *, int, size_t);
|
||||
extern int printf(const char *, ...);
|
||||
@ -24,7 +23,11 @@ extern int printf(const char *, ...);
|
||||
EXPORT_SYMBOL(strstr);
|
||||
#endif
|
||||
|
||||
#ifndef __x86_64__
|
||||
extern void *memcpy(void *, const void *, size_t);
|
||||
EXPORT_SYMBOL(memcpy);
|
||||
#endif
|
||||
|
||||
EXPORT_SYMBOL(memmove);
|
||||
EXPORT_SYMBOL(memset);
|
||||
EXPORT_SYMBOL(printf);
|
||||
|
@ -169,6 +169,9 @@ config GENERIC_HARDIRQS
|
||||
bool
|
||||
default y
|
||||
|
||||
config GENERIC_HARDIRQS_NO__DO_IRQ
|
||||
def_bool y
|
||||
|
||||
config GENERIC_IRQ_PROBE
|
||||
bool
|
||||
default y
|
||||
@ -1129,7 +1132,7 @@ config NUMA_EMU
|
||||
|
||||
config NODES_SHIFT
|
||||
int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP
|
||||
range 1 9 if X86_64
|
||||
range 1 9
|
||||
default "9" if MAXSMP
|
||||
default "6" if X86_64
|
||||
default "4" if X86_NUMAQ
|
||||
|
@ -153,34 +153,23 @@ endif
|
||||
|
||||
boot := arch/x86/boot
|
||||
|
||||
PHONY += zImage bzImage compressed zlilo bzlilo \
|
||||
zdisk bzdisk fdimage fdimage144 fdimage288 isoimage install
|
||||
BOOT_TARGETS = bzlilo bzdisk fdimage fdimage144 fdimage288 isoimage install
|
||||
|
||||
PHONY += bzImage $(BOOT_TARGETS)
|
||||
|
||||
# Default kernel to build
|
||||
all: bzImage
|
||||
|
||||
# KBUILD_IMAGE specify target image being built
|
||||
KBUILD_IMAGE := $(boot)/bzImage
|
||||
zImage zlilo zdisk: KBUILD_IMAGE := $(boot)/zImage
|
||||
KBUILD_IMAGE := $(boot)/bzImage
|
||||
|
||||
zImage bzImage: vmlinux
|
||||
bzImage: vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) $(KBUILD_IMAGE)
|
||||
$(Q)mkdir -p $(objtree)/arch/$(UTS_MACHINE)/boot
|
||||
$(Q)ln -fsn ../../x86/boot/bzImage $(objtree)/arch/$(UTS_MACHINE)/boot/$@
|
||||
|
||||
compressed: zImage
|
||||
|
||||
zlilo bzlilo: vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) zlilo
|
||||
|
||||
zdisk bzdisk: vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) zdisk
|
||||
|
||||
fdimage fdimage144 fdimage288 isoimage: vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) $@
|
||||
|
||||
install:
|
||||
$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) install
|
||||
$(BOOT_TARGETS): vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) $@
|
||||
|
||||
PHONY += vdso_install
|
||||
vdso_install:
|
||||
@ -205,7 +194,3 @@ define archhelp
|
||||
echo ' FDARGS="..." arguments for the booted kernel'
|
||||
echo ' FDINITRD=file initrd for the booted kernel'
|
||||
endef
|
||||
|
||||
CLEAN_FILES += arch/x86/boot/fdimage \
|
||||
arch/x86/boot/image.iso \
|
||||
arch/x86/boot/mtools.conf
|
||||
|
@ -23,6 +23,7 @@ ROOT_DEV := CURRENT
|
||||
SVGA_MODE := -DSVGA_MODE=NORMAL_VGA
|
||||
|
||||
targets := vmlinux.bin setup.bin setup.elf bzImage
|
||||
targets += fdimage fdimage144 fdimage288 image.iso mtools.conf
|
||||
subdir- := compressed
|
||||
|
||||
setup-y += a20.o cmdline.o copy.o cpu.o cpucheck.o edd.o
|
||||
@ -109,9 +110,11 @@ $(obj)/setup.bin: $(obj)/setup.elf FORCE
|
||||
$(obj)/compressed/vmlinux: FORCE
|
||||
$(Q)$(MAKE) $(build)=$(obj)/compressed $@
|
||||
|
||||
# Set this if you want to pass append arguments to the zdisk/fdimage/isoimage kernel
|
||||
# Set this if you want to pass append arguments to the
|
||||
# bzdisk/fdimage/isoimage kernel
|
||||
FDARGS =
|
||||
# Set this if you want an initrd included with the zdisk/fdimage/isoimage kernel
|
||||
# Set this if you want an initrd included with the
|
||||
# bzdisk/fdimage/isoimage kernel
|
||||
FDINITRD =
|
||||
|
||||
image_cmdline = default linux $(FDARGS) $(if $(FDINITRD),initrd=initrd.img,)
|
||||
@ -120,7 +123,7 @@ $(obj)/mtools.conf: $(src)/mtools.conf.in
|
||||
sed -e 's|@OBJ@|$(obj)|g' < $< > $@
|
||||
|
||||
# This requires write access to /dev/fd0
|
||||
zdisk: $(BOOTIMAGE) $(obj)/mtools.conf
|
||||
bzdisk: $(obj)/bzImage $(obj)/mtools.conf
|
||||
MTOOLSRC=$(obj)/mtools.conf mformat a: ; sync
|
||||
syslinux /dev/fd0 ; sync
|
||||
echo '$(image_cmdline)' | \
|
||||
@ -128,10 +131,10 @@ zdisk: $(BOOTIMAGE) $(obj)/mtools.conf
|
||||
if [ -f '$(FDINITRD)' ] ; then \
|
||||
MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' a:initrd.img ; \
|
||||
fi
|
||||
MTOOLSRC=$(obj)/mtools.conf mcopy $(BOOTIMAGE) a:linux ; sync
|
||||
MTOOLSRC=$(obj)/mtools.conf mcopy $(obj)/bzImage a:linux ; sync
|
||||
|
||||
# These require being root or having syslinux 2.02 or higher installed
|
||||
fdimage fdimage144: $(BOOTIMAGE) $(obj)/mtools.conf
|
||||
fdimage fdimage144: $(obj)/bzImage $(obj)/mtools.conf
|
||||
dd if=/dev/zero of=$(obj)/fdimage bs=1024 count=1440
|
||||
MTOOLSRC=$(obj)/mtools.conf mformat v: ; sync
|
||||
syslinux $(obj)/fdimage ; sync
|
||||
@ -140,9 +143,9 @@ fdimage fdimage144: $(BOOTIMAGE) $(obj)/mtools.conf
|
||||
if [ -f '$(FDINITRD)' ] ; then \
|
||||
MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' v:initrd.img ; \
|
||||
fi
|
||||
MTOOLSRC=$(obj)/mtools.conf mcopy $(BOOTIMAGE) v:linux ; sync
|
||||
MTOOLSRC=$(obj)/mtools.conf mcopy $(obj)/bzImage v:linux ; sync
|
||||
|
||||
fdimage288: $(BOOTIMAGE) $(obj)/mtools.conf
|
||||
fdimage288: $(obj)/bzImage $(obj)/mtools.conf
|
||||
dd if=/dev/zero of=$(obj)/fdimage bs=1024 count=2880
|
||||
MTOOLSRC=$(obj)/mtools.conf mformat w: ; sync
|
||||
syslinux $(obj)/fdimage ; sync
|
||||
@ -151,9 +154,9 @@ fdimage288: $(BOOTIMAGE) $(obj)/mtools.conf
|
||||
if [ -f '$(FDINITRD)' ] ; then \
|
||||
MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' w:initrd.img ; \
|
||||
fi
|
||||
MTOOLSRC=$(obj)/mtools.conf mcopy $(BOOTIMAGE) w:linux ; sync
|
||||
MTOOLSRC=$(obj)/mtools.conf mcopy $(obj)/bzImage w:linux ; sync
|
||||
|
||||
isoimage: $(BOOTIMAGE)
|
||||
isoimage: $(obj)/bzImage
|
||||
-rm -rf $(obj)/isoimage
|
||||
mkdir $(obj)/isoimage
|
||||
for i in lib lib64 share end ; do \
|
||||
@ -163,7 +166,7 @@ isoimage: $(BOOTIMAGE)
|
||||
fi ; \
|
||||
if [ $$i = end ] ; then exit 1 ; fi ; \
|
||||
done
|
||||
cp $(BOOTIMAGE) $(obj)/isoimage/linux
|
||||
cp $(obj)/bzImage $(obj)/isoimage/linux
|
||||
echo '$(image_cmdline)' > $(obj)/isoimage/isolinux.cfg
|
||||
if [ -f '$(FDINITRD)' ] ; then \
|
||||
cp '$(FDINITRD)' $(obj)/isoimage/initrd.img ; \
|
||||
@ -174,12 +177,13 @@ isoimage: $(BOOTIMAGE)
|
||||
isohybrid $(obj)/image.iso 2>/dev/null || true
|
||||
rm -rf $(obj)/isoimage
|
||||
|
||||
zlilo: $(BOOTIMAGE)
|
||||
bzlilo: $(obj)/bzImage
|
||||
if [ -f $(INSTALL_PATH)/vmlinuz ]; then mv $(INSTALL_PATH)/vmlinuz $(INSTALL_PATH)/vmlinuz.old; fi
|
||||
if [ -f $(INSTALL_PATH)/System.map ]; then mv $(INSTALL_PATH)/System.map $(INSTALL_PATH)/System.old; fi
|
||||
cat $(BOOTIMAGE) > $(INSTALL_PATH)/vmlinuz
|
||||
cat $(obj)/bzImage > $(INSTALL_PATH)/vmlinuz
|
||||
cp System.map $(INSTALL_PATH)/
|
||||
if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi
|
||||
|
||||
install:
|
||||
sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(BOOTIMAGE) System.map "$(INSTALL_PATH)"
|
||||
sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(obj)/bzImage \
|
||||
System.map "$(INSTALL_PATH)"
|
||||
|
@ -171,6 +171,17 @@ struct cpu_private {
|
||||
struct cpu_debug_base {
|
||||
char *name; /* Register name */
|
||||
unsigned flag; /* Register flag */
|
||||
unsigned write; /* Register write flag */
|
||||
};
|
||||
|
||||
/*
|
||||
* Currently it looks similar to cpu_debug_base but once we add more files
|
||||
* cpu_file_base will go in different direction
|
||||
*/
|
||||
struct cpu_file_base {
|
||||
char *name; /* Register file name */
|
||||
unsigned flag; /* Register file flag */
|
||||
unsigned write; /* Register write flag */
|
||||
};
|
||||
|
||||
struct cpu_cpuX_base {
|
||||
@ -178,11 +189,6 @@ struct cpu_cpuX_base {
|
||||
int init; /* Register index file */
|
||||
};
|
||||
|
||||
struct cpu_file_base {
|
||||
char *name; /* Register file name */
|
||||
unsigned flag; /* Register file flag */
|
||||
};
|
||||
|
||||
struct cpu_debug_range {
|
||||
unsigned min; /* Register range min */
|
||||
unsigned max; /* Register range max */
|
||||
|
@ -75,9 +75,9 @@ struct cpuinfo_x86 {
|
||||
#else
|
||||
/* Number of 4K pages in DTLB/ITLB combined(in pages): */
|
||||
int x86_tlbsize;
|
||||
#endif
|
||||
__u8 x86_virt_bits;
|
||||
__u8 x86_phys_bits;
|
||||
#endif
|
||||
/* CPUID returned core id bits: */
|
||||
__u8 x86_coreid_bits;
|
||||
/* Max extended CPUID function supported: */
|
||||
@ -391,6 +391,9 @@ DECLARE_PER_CPU(union irq_stack_union, irq_stack_union);
|
||||
DECLARE_INIT_PER_CPU(irq_stack_union);
|
||||
|
||||
DECLARE_PER_CPU(char *, irq_stack_ptr);
|
||||
DECLARE_PER_CPU(unsigned int, irq_count);
|
||||
extern unsigned long kernel_eflags;
|
||||
extern asmlinkage void ignore_sysret(void);
|
||||
#else /* X86_64 */
|
||||
#ifdef CONFIG_CC_STACKPROTECTOR
|
||||
DECLARE_PER_CPU(unsigned long, stack_canary);
|
||||
|
@ -296,6 +296,8 @@ HYPERVISOR_get_debugreg(int reg)
|
||||
static inline int
|
||||
HYPERVISOR_update_descriptor(u64 ma, u64 desc)
|
||||
{
|
||||
if (sizeof(u64) == sizeof(long))
|
||||
return _hypercall2(int, update_descriptor, ma, desc);
|
||||
return _hypercall4(int, update_descriptor, ma, ma>>32, desc, desc>>32);
|
||||
}
|
||||
|
||||
|
@ -83,7 +83,7 @@ void __init setup_bios_corruption_check(void)
|
||||
u64 size;
|
||||
addr = find_e820_area_size(addr, &size, PAGE_SIZE);
|
||||
|
||||
if (addr == 0)
|
||||
if (!(addr + 1))
|
||||
break;
|
||||
|
||||
if ((addr + size) > corruption_check_size)
|
||||
|
@ -29,7 +29,7 @@ void __cpuinit init_scattered_cpuid_features(struct cpuinfo_x86 *c)
|
||||
u32 regs[4];
|
||||
const struct cpuid_bit *cb;
|
||||
|
||||
static const struct cpuid_bit cpuid_bits[] = {
|
||||
static const struct cpuid_bit __cpuinitconst cpuid_bits[] = {
|
||||
{ X86_FEATURE_IDA, CR_EAX, 1, 0x00000006 },
|
||||
{ 0, 0, 0, 0 }
|
||||
};
|
||||
|
@ -502,7 +502,7 @@ static unsigned int __cpuinit amd_size_cache(struct cpuinfo_x86 *c, unsigned int
|
||||
}
|
||||
#endif
|
||||
|
||||
static struct cpu_dev amd_cpu_dev __cpuinitdata = {
|
||||
static const struct cpu_dev __cpuinitconst amd_cpu_dev = {
|
||||
.c_vendor = "AMD",
|
||||
.c_ident = { "AuthenticAMD" },
|
||||
#ifdef CONFIG_X86_32
|
||||
|
@ -468,7 +468,7 @@ centaur_size_cache(struct cpuinfo_x86 *c, unsigned int size)
|
||||
return size;
|
||||
}
|
||||
|
||||
static struct cpu_dev centaur_cpu_dev __cpuinitdata = {
|
||||
static const struct cpu_dev __cpuinitconst centaur_cpu_dev = {
|
||||
.c_vendor = "Centaur",
|
||||
.c_ident = { "CentaurHauls" },
|
||||
.c_early_init = early_init_centaur,
|
||||
|
@ -25,7 +25,7 @@ static void __cpuinit init_centaur(struct cpuinfo_x86 *c)
|
||||
set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC);
|
||||
}
|
||||
|
||||
static struct cpu_dev centaur_cpu_dev __cpuinitdata = {
|
||||
static const struct cpu_dev centaur_cpu_dev __cpuinitconst = {
|
||||
.c_vendor = "Centaur",
|
||||
.c_ident = { "CentaurHauls" },
|
||||
.c_early_init = early_init_centaur,
|
||||
|
@ -1,52 +1,52 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/bootmem.h>
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/kgdb.h>
|
||||
#include <linux/topology.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/percpu.h>
|
||||
#include <asm/i387.h>
|
||||
#include <asm/msr.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/linkage.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/kgdb.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include <asm/stackprotector.h>
|
||||
#include <asm/mmu_context.h>
|
||||
#include <asm/mtrr.h>
|
||||
#include <asm/mce.h>
|
||||
#include <asm/pat.h>
|
||||
#include <asm/asm.h>
|
||||
#include <asm/numa.h>
|
||||
#include <asm/smp.h>
|
||||
#include <asm/cpu.h>
|
||||
#include <asm/hypervisor.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/sections.h>
|
||||
#include <asm/topology.h>
|
||||
#include <asm/cpumask.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/proto.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/apic.h>
|
||||
#include <asm/desc.h>
|
||||
#include <asm/i387.h>
|
||||
#include <asm/mtrr.h>
|
||||
#include <asm/numa.h>
|
||||
#include <asm/asm.h>
|
||||
#include <asm/cpu.h>
|
||||
#include <asm/mce.h>
|
||||
#include <asm/msr.h>
|
||||
#include <asm/pat.h>
|
||||
#include <asm/smp.h>
|
||||
|
||||
#ifdef CONFIG_X86_LOCAL_APIC
|
||||
#include <asm/uv/uv.h>
|
||||
#endif
|
||||
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/desc.h>
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/proto.h>
|
||||
#include <asm/sections.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/hypervisor.h>
|
||||
#include <asm/stackprotector.h>
|
||||
|
||||
#include "cpu.h"
|
||||
|
||||
#ifdef CONFIG_X86_64
|
||||
|
||||
/* all of these masks are initialized in setup_cpu_local_masks() */
|
||||
cpumask_var_t cpu_callin_mask;
|
||||
cpumask_var_t cpu_callout_mask;
|
||||
cpumask_var_t cpu_initialized_mask;
|
||||
cpumask_var_t cpu_callout_mask;
|
||||
cpumask_var_t cpu_callin_mask;
|
||||
|
||||
/* representing cpus for which sibling maps can be computed */
|
||||
cpumask_var_t cpu_sibling_setup_mask;
|
||||
@ -62,15 +62,15 @@ void __init setup_cpu_local_masks(void)
|
||||
|
||||
#else /* CONFIG_X86_32 */
|
||||
|
||||
cpumask_t cpu_callin_map;
|
||||
cpumask_t cpu_sibling_setup_map;
|
||||
cpumask_t cpu_callout_map;
|
||||
cpumask_t cpu_initialized;
|
||||
cpumask_t cpu_sibling_setup_map;
|
||||
cpumask_t cpu_callin_map;
|
||||
|
||||
#endif /* CONFIG_X86_32 */
|
||||
|
||||
|
||||
static struct cpu_dev *this_cpu __cpuinitdata;
|
||||
static const struct cpu_dev *this_cpu __cpuinitdata;
|
||||
|
||||
DEFINE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page) = { .gdt = {
|
||||
#ifdef CONFIG_X86_64
|
||||
@ -79,48 +79,48 @@ DEFINE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page) = { .gdt = {
|
||||
* IRET will check the segment types kkeil 2000/10/28
|
||||
* Also sysret mandates a special GDT layout
|
||||
*
|
||||
* The TLS descriptors are currently at a different place compared to i386.
|
||||
* TLS descriptors are currently at a different place compared to i386.
|
||||
* Hopefully nobody expects them at a fixed place (Wine?)
|
||||
*/
|
||||
[GDT_ENTRY_KERNEL32_CS] = { { { 0x0000ffff, 0x00cf9b00 } } },
|
||||
[GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00af9b00 } } },
|
||||
[GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9300 } } },
|
||||
[GDT_ENTRY_DEFAULT_USER32_CS] = { { { 0x0000ffff, 0x00cffb00 } } },
|
||||
[GDT_ENTRY_DEFAULT_USER_DS] = { { { 0x0000ffff, 0x00cff300 } } },
|
||||
[GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00affb00 } } },
|
||||
[GDT_ENTRY_KERNEL32_CS] = { { { 0x0000ffff, 0x00cf9b00 } } },
|
||||
[GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00af9b00 } } },
|
||||
[GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9300 } } },
|
||||
[GDT_ENTRY_DEFAULT_USER32_CS] = { { { 0x0000ffff, 0x00cffb00 } } },
|
||||
[GDT_ENTRY_DEFAULT_USER_DS] = { { { 0x0000ffff, 0x00cff300 } } },
|
||||
[GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00affb00 } } },
|
||||
#else
|
||||
[GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00cf9a00 } } },
|
||||
[GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9200 } } },
|
||||
[GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00cffa00 } } },
|
||||
[GDT_ENTRY_DEFAULT_USER_DS] = { { { 0x0000ffff, 0x00cff200 } } },
|
||||
[GDT_ENTRY_KERNEL_CS] = { { { 0x0000ffff, 0x00cf9a00 } } },
|
||||
[GDT_ENTRY_KERNEL_DS] = { { { 0x0000ffff, 0x00cf9200 } } },
|
||||
[GDT_ENTRY_DEFAULT_USER_CS] = { { { 0x0000ffff, 0x00cffa00 } } },
|
||||
[GDT_ENTRY_DEFAULT_USER_DS] = { { { 0x0000ffff, 0x00cff200 } } },
|
||||
/*
|
||||
* Segments used for calling PnP BIOS have byte granularity.
|
||||
* They code segments and data segments have fixed 64k limits,
|
||||
* the transfer segment sizes are set at run time.
|
||||
*/
|
||||
/* 32-bit code */
|
||||
[GDT_ENTRY_PNPBIOS_CS32] = { { { 0x0000ffff, 0x00409a00 } } },
|
||||
[GDT_ENTRY_PNPBIOS_CS32] = { { { 0x0000ffff, 0x00409a00 } } },
|
||||
/* 16-bit code */
|
||||
[GDT_ENTRY_PNPBIOS_CS16] = { { { 0x0000ffff, 0x00009a00 } } },
|
||||
[GDT_ENTRY_PNPBIOS_CS16] = { { { 0x0000ffff, 0x00009a00 } } },
|
||||
/* 16-bit data */
|
||||
[GDT_ENTRY_PNPBIOS_DS] = { { { 0x0000ffff, 0x00009200 } } },
|
||||
[GDT_ENTRY_PNPBIOS_DS] = { { { 0x0000ffff, 0x00009200 } } },
|
||||
/* 16-bit data */
|
||||
[GDT_ENTRY_PNPBIOS_TS1] = { { { 0x00000000, 0x00009200 } } },
|
||||
[GDT_ENTRY_PNPBIOS_TS1] = { { { 0x00000000, 0x00009200 } } },
|
||||
/* 16-bit data */
|
||||
[GDT_ENTRY_PNPBIOS_TS2] = { { { 0x00000000, 0x00009200 } } },
|
||||
[GDT_ENTRY_PNPBIOS_TS2] = { { { 0x00000000, 0x00009200 } } },
|
||||
/*
|
||||
* The APM segments have byte granularity and their bases
|
||||
* are set at run time. All have 64k limits.
|
||||
*/
|
||||
/* 32-bit code */
|
||||
[GDT_ENTRY_APMBIOS_BASE] = { { { 0x0000ffff, 0x00409a00 } } },
|
||||
[GDT_ENTRY_APMBIOS_BASE] = { { { 0x0000ffff, 0x00409a00 } } },
|
||||
/* 16-bit code */
|
||||
[GDT_ENTRY_APMBIOS_BASE+1] = { { { 0x0000ffff, 0x00009a00 } } },
|
||||
[GDT_ENTRY_APMBIOS_BASE+1] = { { { 0x0000ffff, 0x00009a00 } } },
|
||||
/* data */
|
||||
[GDT_ENTRY_APMBIOS_BASE+2] = { { { 0x0000ffff, 0x00409200 } } },
|
||||
[GDT_ENTRY_APMBIOS_BASE+2] = { { { 0x0000ffff, 0x00409200 } } },
|
||||
|
||||
[GDT_ENTRY_ESPFIX_SS] = { { { 0x00000000, 0x00c09200 } } },
|
||||
[GDT_ENTRY_PERCPU] = { { { 0x0000ffff, 0x00cf9200 } } },
|
||||
[GDT_ENTRY_ESPFIX_SS] = { { { 0x00000000, 0x00c09200 } } },
|
||||
[GDT_ENTRY_PERCPU] = { { { 0x0000ffff, 0x00cf9200 } } },
|
||||
GDT_STACK_CANARY_INIT
|
||||
#endif
|
||||
} };
|
||||
@ -164,16 +164,17 @@ static inline int flag_is_changeable_p(u32 flag)
|
||||
* the CPUID. Add "volatile" to not allow gcc to
|
||||
* optimize the subsequent calls to this function.
|
||||
*/
|
||||
asm volatile ("pushfl\n\t"
|
||||
"pushfl\n\t"
|
||||
"popl %0\n\t"
|
||||
"movl %0,%1\n\t"
|
||||
"xorl %2,%0\n\t"
|
||||
"pushl %0\n\t"
|
||||
"popfl\n\t"
|
||||
"pushfl\n\t"
|
||||
"popl %0\n\t"
|
||||
"popfl\n\t"
|
||||
asm volatile ("pushfl \n\t"
|
||||
"pushfl \n\t"
|
||||
"popl %0 \n\t"
|
||||
"movl %0, %1 \n\t"
|
||||
"xorl %2, %0 \n\t"
|
||||
"pushl %0 \n\t"
|
||||
"popfl \n\t"
|
||||
"pushfl \n\t"
|
||||
"popl %0 \n\t"
|
||||
"popfl \n\t"
|
||||
|
||||
: "=&r" (f1), "=&r" (f2)
|
||||
: "ir" (flag));
|
||||
|
||||
@ -188,18 +189,22 @@ static int __cpuinit have_cpuid_p(void)
|
||||
|
||||
static void __cpuinit squash_the_stupid_serial_number(struct cpuinfo_x86 *c)
|
||||
{
|
||||
if (cpu_has(c, X86_FEATURE_PN) && disable_x86_serial_nr) {
|
||||
/* Disable processor serial number */
|
||||
unsigned long lo, hi;
|
||||
rdmsr(MSR_IA32_BBL_CR_CTL, lo, hi);
|
||||
lo |= 0x200000;
|
||||
wrmsr(MSR_IA32_BBL_CR_CTL, lo, hi);
|
||||
printk(KERN_NOTICE "CPU serial number disabled.\n");
|
||||
clear_cpu_cap(c, X86_FEATURE_PN);
|
||||
unsigned long lo, hi;
|
||||
|
||||
/* Disabling the serial number may affect the cpuid level */
|
||||
c->cpuid_level = cpuid_eax(0);
|
||||
}
|
||||
if (!cpu_has(c, X86_FEATURE_PN) || !disable_x86_serial_nr)
|
||||
return;
|
||||
|
||||
/* Disable processor serial number: */
|
||||
|
||||
rdmsr(MSR_IA32_BBL_CR_CTL, lo, hi);
|
||||
lo |= 0x200000;
|
||||
wrmsr(MSR_IA32_BBL_CR_CTL, lo, hi);
|
||||
|
||||
printk(KERN_NOTICE "CPU serial number disabled.\n");
|
||||
clear_cpu_cap(c, X86_FEATURE_PN);
|
||||
|
||||
/* Disabling the serial number may affect the cpuid level */
|
||||
c->cpuid_level = cpuid_eax(0);
|
||||
}
|
||||
|
||||
static int __init x86_serial_nr_setup(char *s)
|
||||
@ -232,6 +237,7 @@ struct cpuid_dependent_feature {
|
||||
u32 feature;
|
||||
u32 level;
|
||||
};
|
||||
|
||||
static const struct cpuid_dependent_feature __cpuinitconst
|
||||
cpuid_dependent_features[] = {
|
||||
{ X86_FEATURE_MWAIT, 0x00000005 },
|
||||
@ -243,7 +249,11 @@ cpuid_dependent_features[] = {
|
||||
static void __cpuinit filter_cpuid_features(struct cpuinfo_x86 *c, bool warn)
|
||||
{
|
||||
const struct cpuid_dependent_feature *df;
|
||||
|
||||
for (df = cpuid_dependent_features; df->feature; df++) {
|
||||
|
||||
if (!cpu_has(c, df->feature))
|
||||
continue;
|
||||
/*
|
||||
* Note: cpuid_level is set to -1 if unavailable, but
|
||||
* extended_extended_level is set to 0 if unavailable
|
||||
@ -251,32 +261,32 @@ static void __cpuinit filter_cpuid_features(struct cpuinfo_x86 *c, bool warn)
|
||||
* when signed; hence the weird messing around with
|
||||
* signs here...
|
||||
*/
|
||||
if (cpu_has(c, df->feature) &&
|
||||
((s32)df->level < 0 ?
|
||||
if (!((s32)df->level < 0 ?
|
||||
(u32)df->level > (u32)c->extended_cpuid_level :
|
||||
(s32)df->level > (s32)c->cpuid_level)) {
|
||||
clear_cpu_cap(c, df->feature);
|
||||
if (warn)
|
||||
printk(KERN_WARNING
|
||||
"CPU: CPU feature %s disabled "
|
||||
"due to lack of CPUID level 0x%x\n",
|
||||
x86_cap_flags[df->feature],
|
||||
df->level);
|
||||
}
|
||||
(s32)df->level > (s32)c->cpuid_level))
|
||||
continue;
|
||||
|
||||
clear_cpu_cap(c, df->feature);
|
||||
if (!warn)
|
||||
continue;
|
||||
|
||||
printk(KERN_WARNING
|
||||
"CPU: CPU feature %s disabled, no CPUID level 0x%x\n",
|
||||
x86_cap_flags[df->feature], df->level);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Naming convention should be: <Name> [(<Codename>)]
|
||||
* This table only is used unless init_<vendor>() below doesn't set it;
|
||||
* in particular, if CPUID levels 0x80000002..4 are supported, this isn't used
|
||||
*
|
||||
* in particular, if CPUID levels 0x80000002..4 are supported, this
|
||||
* isn't used
|
||||
*/
|
||||
|
||||
/* Look up CPU names by table lookup. */
|
||||
static char __cpuinit *table_lookup_model(struct cpuinfo_x86 *c)
|
||||
static const char *__cpuinit table_lookup_model(struct cpuinfo_x86 *c)
|
||||
{
|
||||
struct cpu_model_info *info;
|
||||
const struct cpu_model_info *info;
|
||||
|
||||
if (c->x86_model >= 16)
|
||||
return NULL; /* Range check */
|
||||
@ -307,8 +317,10 @@ void load_percpu_segment(int cpu)
|
||||
load_stack_canary_segment();
|
||||
}
|
||||
|
||||
/* Current gdt points %fs at the "master" per-cpu area: after this,
|
||||
* it's on the real one. */
|
||||
/*
|
||||
* Current gdt points %fs at the "master" per-cpu area: after this,
|
||||
* it's on the real one.
|
||||
*/
|
||||
void switch_to_new_gdt(int cpu)
|
||||
{
|
||||
struct desc_ptr gdt_descr;
|
||||
@ -321,7 +333,7 @@ void switch_to_new_gdt(int cpu)
|
||||
load_percpu_segment(cpu);
|
||||
}
|
||||
|
||||
static struct cpu_dev *cpu_devs[X86_VENDOR_NUM] = {};
|
||||
static const struct cpu_dev *__cpuinitdata cpu_devs[X86_VENDOR_NUM] = {};
|
||||
|
||||
static void __cpuinit default_init(struct cpuinfo_x86 *c)
|
||||
{
|
||||
@ -340,7 +352,7 @@ static void __cpuinit default_init(struct cpuinfo_x86 *c)
|
||||
#endif
|
||||
}
|
||||
|
||||
static struct cpu_dev __cpuinitdata default_cpu = {
|
||||
static const struct cpu_dev __cpuinitconst default_cpu = {
|
||||
.c_init = default_init,
|
||||
.c_vendor = "Unknown",
|
||||
.c_x86_vendor = X86_VENDOR_UNKNOWN,
|
||||
@ -354,22 +366,24 @@ static void __cpuinit get_model_name(struct cpuinfo_x86 *c)
|
||||
if (c->extended_cpuid_level < 0x80000004)
|
||||
return;
|
||||
|
||||
v = (unsigned int *) c->x86_model_id;
|
||||
v = (unsigned int *)c->x86_model_id;
|
||||
cpuid(0x80000002, &v[0], &v[1], &v[2], &v[3]);
|
||||
cpuid(0x80000003, &v[4], &v[5], &v[6], &v[7]);
|
||||
cpuid(0x80000004, &v[8], &v[9], &v[10], &v[11]);
|
||||
c->x86_model_id[48] = 0;
|
||||
|
||||
/* Intel chips right-justify this string for some dumb reason;
|
||||
undo that brain damage */
|
||||
/*
|
||||
* Intel chips right-justify this string for some dumb reason;
|
||||
* undo that brain damage:
|
||||
*/
|
||||
p = q = &c->x86_model_id[0];
|
||||
while (*p == ' ')
|
||||
p++;
|
||||
p++;
|
||||
if (p != q) {
|
||||
while (*p)
|
||||
*q++ = *p++;
|
||||
while (q <= &c->x86_model_id[48])
|
||||
*q++ = '\0'; /* Zero-pad the rest */
|
||||
while (*p)
|
||||
*q++ = *p++;
|
||||
while (q <= &c->x86_model_id[48])
|
||||
*q++ = '\0'; /* Zero-pad the rest */
|
||||
}
|
||||
}
|
||||
|
||||
@ -438,28 +452,31 @@ void __cpuinit detect_ht(struct cpuinfo_x86 *c)
|
||||
|
||||
if (smp_num_siblings == 1) {
|
||||
printk(KERN_INFO "CPU: Hyper-Threading is disabled\n");
|
||||
} else if (smp_num_siblings > 1) {
|
||||
|
||||
if (smp_num_siblings > nr_cpu_ids) {
|
||||
printk(KERN_WARNING "CPU: Unsupported number of siblings %d",
|
||||
smp_num_siblings);
|
||||
smp_num_siblings = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
index_msb = get_count_order(smp_num_siblings);
|
||||
c->phys_proc_id = apic->phys_pkg_id(c->initial_apicid, index_msb);
|
||||
|
||||
smp_num_siblings = smp_num_siblings / c->x86_max_cores;
|
||||
|
||||
index_msb = get_count_order(smp_num_siblings);
|
||||
|
||||
core_bits = get_count_order(c->x86_max_cores);
|
||||
|
||||
c->cpu_core_id = apic->phys_pkg_id(c->initial_apicid, index_msb) &
|
||||
((1 << core_bits) - 1);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (smp_num_siblings <= 1)
|
||||
goto out;
|
||||
|
||||
if (smp_num_siblings > nr_cpu_ids) {
|
||||
pr_warning("CPU: Unsupported number of siblings %d",
|
||||
smp_num_siblings);
|
||||
smp_num_siblings = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
index_msb = get_count_order(smp_num_siblings);
|
||||
c->phys_proc_id = apic->phys_pkg_id(c->initial_apicid, index_msb);
|
||||
|
||||
smp_num_siblings = smp_num_siblings / c->x86_max_cores;
|
||||
|
||||
index_msb = get_count_order(smp_num_siblings);
|
||||
|
||||
core_bits = get_count_order(c->x86_max_cores);
|
||||
|
||||
c->cpu_core_id = apic->phys_pkg_id(c->initial_apicid, index_msb) &
|
||||
((1 << core_bits) - 1);
|
||||
|
||||
out:
|
||||
if ((c->x86_max_cores * smp_num_siblings) > 1) {
|
||||
printk(KERN_INFO "CPU: Physical Processor ID: %d\n",
|
||||
@ -473,8 +490,8 @@ out:
|
||||
static void __cpuinit get_cpu_vendor(struct cpuinfo_x86 *c)
|
||||
{
|
||||
char *v = c->x86_vendor_id;
|
||||
int i;
|
||||
static int printed;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < X86_VENDOR_NUM; i++) {
|
||||
if (!cpu_devs[i])
|
||||
@ -483,6 +500,7 @@ static void __cpuinit get_cpu_vendor(struct cpuinfo_x86 *c)
|
||||
if (!strcmp(v, cpu_devs[i]->c_ident[0]) ||
|
||||
(cpu_devs[i]->c_ident[1] &&
|
||||
!strcmp(v, cpu_devs[i]->c_ident[1]))) {
|
||||
|
||||
this_cpu = cpu_devs[i];
|
||||
c->x86_vendor = this_cpu->c_x86_vendor;
|
||||
return;
|
||||
@ -491,7 +509,9 @@ static void __cpuinit get_cpu_vendor(struct cpuinfo_x86 *c)
|
||||
|
||||
if (!printed) {
|
||||
printed++;
|
||||
printk(KERN_ERR "CPU: vendor_id '%s' unknown, using generic init.\n", v);
|
||||
printk(KERN_ERR
|
||||
"CPU: vendor_id '%s' unknown, using generic init.\n", v);
|
||||
|
||||
printk(KERN_ERR "CPU: Your system may be unstable.\n");
|
||||
}
|
||||
|
||||
@ -511,14 +531,17 @@ void __cpuinit cpu_detect(struct cpuinfo_x86 *c)
|
||||
/* Intel-defined flags: level 0x00000001 */
|
||||
if (c->cpuid_level >= 0x00000001) {
|
||||
u32 junk, tfms, cap0, misc;
|
||||
|
||||
cpuid(0x00000001, &tfms, &misc, &junk, &cap0);
|
||||
c->x86 = (tfms >> 8) & 0xf;
|
||||
c->x86_model = (tfms >> 4) & 0xf;
|
||||
c->x86_mask = tfms & 0xf;
|
||||
|
||||
if (c->x86 == 0xf)
|
||||
c->x86 += (tfms >> 20) & 0xff;
|
||||
if (c->x86 >= 0x6)
|
||||
c->x86_model += ((tfms >> 16) & 0xf) << 4;
|
||||
|
||||
if (cap0 & (1<<19)) {
|
||||
c->x86_clflush_size = ((misc >> 8) & 0xff) * 8;
|
||||
c->x86_cache_alignment = c->x86_clflush_size;
|
||||
@ -534,6 +557,7 @@ static void __cpuinit get_cpu_cap(struct cpuinfo_x86 *c)
|
||||
/* Intel-defined flags: level 0x00000001 */
|
||||
if (c->cpuid_level >= 0x00000001) {
|
||||
u32 capability, excap;
|
||||
|
||||
cpuid(0x00000001, &tfms, &ebx, &excap, &capability);
|
||||
c->x86_capability[0] = capability;
|
||||
c->x86_capability[4] = excap;
|
||||
@ -542,6 +566,7 @@ static void __cpuinit get_cpu_cap(struct cpuinfo_x86 *c)
|
||||
/* AMD-defined flags: level 0x80000001 */
|
||||
xlvl = cpuid_eax(0x80000000);
|
||||
c->extended_cpuid_level = xlvl;
|
||||
|
||||
if ((xlvl & 0xffff0000) == 0x80000000) {
|
||||
if (xlvl >= 0x80000001) {
|
||||
c->x86_capability[1] = cpuid_edx(0x80000001);
|
||||
@ -549,13 +574,15 @@ static void __cpuinit get_cpu_cap(struct cpuinfo_x86 *c)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_X86_64
|
||||
if (c->extended_cpuid_level >= 0x80000008) {
|
||||
u32 eax = cpuid_eax(0x80000008);
|
||||
|
||||
c->x86_virt_bits = (eax >> 8) & 0xff;
|
||||
c->x86_phys_bits = eax & 0xff;
|
||||
}
|
||||
#ifdef CONFIG_X86_32
|
||||
else if (cpu_has(c, X86_FEATURE_PAE) || cpu_has(c, X86_FEATURE_PSE36))
|
||||
c->x86_phys_bits = 36;
|
||||
#endif
|
||||
|
||||
if (c->extended_cpuid_level >= 0x80000007)
|
||||
@ -602,8 +629,12 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c)
|
||||
{
|
||||
#ifdef CONFIG_X86_64
|
||||
c->x86_clflush_size = 64;
|
||||
c->x86_phys_bits = 36;
|
||||
c->x86_virt_bits = 48;
|
||||
#else
|
||||
c->x86_clflush_size = 32;
|
||||
c->x86_phys_bits = 32;
|
||||
c->x86_virt_bits = 32;
|
||||
#endif
|
||||
c->x86_cache_alignment = c->x86_clflush_size;
|
||||
|
||||
@ -634,12 +665,12 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c)
|
||||
|
||||
void __init early_cpu_init(void)
|
||||
{
|
||||
struct cpu_dev **cdev;
|
||||
const struct cpu_dev *const *cdev;
|
||||
int count = 0;
|
||||
|
||||
printk("KERNEL supported cpus:\n");
|
||||
printk(KERN_INFO "KERNEL supported cpus:\n");
|
||||
for (cdev = __x86_cpu_dev_start; cdev < __x86_cpu_dev_end; cdev++) {
|
||||
struct cpu_dev *cpudev = *cdev;
|
||||
const struct cpu_dev *cpudev = *cdev;
|
||||
unsigned int j;
|
||||
|
||||
if (count >= X86_VENDOR_NUM)
|
||||
@ -650,7 +681,7 @@ void __init early_cpu_init(void)
|
||||
for (j = 0; j < 2; j++) {
|
||||
if (!cpudev->c_ident[j])
|
||||
continue;
|
||||
printk(" %s %s\n", cpudev->c_vendor,
|
||||
printk(KERN_INFO " %s %s\n", cpudev->c_vendor,
|
||||
cpudev->c_ident[j]);
|
||||
}
|
||||
}
|
||||
@ -726,9 +757,13 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
|
||||
c->x86_coreid_bits = 0;
|
||||
#ifdef CONFIG_X86_64
|
||||
c->x86_clflush_size = 64;
|
||||
c->x86_phys_bits = 36;
|
||||
c->x86_virt_bits = 48;
|
||||
#else
|
||||
c->cpuid_level = -1; /* CPUID not detected */
|
||||
c->x86_clflush_size = 32;
|
||||
c->x86_phys_bits = 32;
|
||||
c->x86_virt_bits = 32;
|
||||
#endif
|
||||
c->x86_cache_alignment = c->x86_clflush_size;
|
||||
memset(&c->x86_capability, 0, sizeof c->x86_capability);
|
||||
@ -759,8 +794,8 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
|
||||
squash_the_stupid_serial_number(c);
|
||||
|
||||
/*
|
||||
* The vendor-specific functions might have changed features. Now
|
||||
* we do "generic changes."
|
||||
* The vendor-specific functions might have changed features.
|
||||
* Now we do "generic changes."
|
||||
*/
|
||||
|
||||
/* Filter out anything that depends on CPUID levels we don't have */
|
||||
@ -768,7 +803,7 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
|
||||
|
||||
/* If the model name is still unset, do table lookup. */
|
||||
if (!c->x86_model_id[0]) {
|
||||
char *p;
|
||||
const char *p;
|
||||
p = table_lookup_model(c);
|
||||
if (p)
|
||||
strcpy(c->x86_model_id, p);
|
||||
@ -843,11 +878,11 @@ void __cpuinit identify_secondary_cpu(struct cpuinfo_x86 *c)
|
||||
}
|
||||
|
||||
struct msr_range {
|
||||
unsigned min;
|
||||
unsigned max;
|
||||
unsigned min;
|
||||
unsigned max;
|
||||
};
|
||||
|
||||
static struct msr_range msr_range_array[] __cpuinitdata = {
|
||||
static const struct msr_range msr_range_array[] __cpuinitconst = {
|
||||
{ 0x00000000, 0x00000418},
|
||||
{ 0xc0000000, 0xc000040b},
|
||||
{ 0xc0010000, 0xc0010142},
|
||||
@ -856,14 +891,15 @@ static struct msr_range msr_range_array[] __cpuinitdata = {
|
||||
|
||||
static void __cpuinit print_cpu_msr(void)
|
||||
{
|
||||
unsigned index_min, index_max;
|
||||
unsigned index;
|
||||
u64 val;
|
||||
int i;
|
||||
unsigned index_min, index_max;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(msr_range_array); i++) {
|
||||
index_min = msr_range_array[i].min;
|
||||
index_max = msr_range_array[i].max;
|
||||
|
||||
for (index = index_min; index < index_max; index++) {
|
||||
if (rdmsrl_amd_safe(index, &val))
|
||||
continue;
|
||||
@ -873,6 +909,7 @@ static void __cpuinit print_cpu_msr(void)
|
||||
}
|
||||
|
||||
static int show_msr __cpuinitdata;
|
||||
|
||||
static __init int setup_show_msr(char *arg)
|
||||
{
|
||||
int num;
|
||||
@ -894,12 +931,14 @@ __setup("noclflush", setup_noclflush);
|
||||
|
||||
void __cpuinit print_cpu_info(struct cpuinfo_x86 *c)
|
||||
{
|
||||
char *vendor = NULL;
|
||||
const char *vendor = NULL;
|
||||
|
||||
if (c->x86_vendor < X86_VENDOR_NUM)
|
||||
if (c->x86_vendor < X86_VENDOR_NUM) {
|
||||
vendor = this_cpu->c_vendor;
|
||||
else if (c->cpuid_level >= 0)
|
||||
vendor = c->x86_vendor_id;
|
||||
} else {
|
||||
if (c->cpuid_level >= 0)
|
||||
vendor = c->x86_vendor_id;
|
||||
}
|
||||
|
||||
if (vendor && !strstr(c->x86_model_id, vendor))
|
||||
printk(KERN_CONT "%s ", vendor);
|
||||
@ -926,10 +965,12 @@ void __cpuinit print_cpu_info(struct cpuinfo_x86 *c)
|
||||
static __init int setup_disablecpuid(char *arg)
|
||||
{
|
||||
int bit;
|
||||
|
||||
if (get_option(&arg, &bit) && bit < NCAPINTS*32)
|
||||
setup_clear_cpu_cap(bit);
|
||||
else
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
__setup("clearcpuid=", setup_disablecpuid);
|
||||
@ -939,6 +980,7 @@ struct desc_ptr idt_descr = { 256 * 16 - 1, (unsigned long) idt_table };
|
||||
|
||||
DEFINE_PER_CPU_FIRST(union irq_stack_union,
|
||||
irq_stack_union) __aligned(PAGE_SIZE);
|
||||
|
||||
DEFINE_PER_CPU(char *, irq_stack_ptr) =
|
||||
init_per_cpu_var(irq_stack_union.irq_stack) + IRQ_STACK_SIZE - 64;
|
||||
|
||||
@ -948,12 +990,21 @@ EXPORT_PER_CPU_SYMBOL(kernel_stack);
|
||||
|
||||
DEFINE_PER_CPU(unsigned int, irq_count) = -1;
|
||||
|
||||
/*
|
||||
* Special IST stacks which the CPU switches to when it calls
|
||||
* an IST-marked descriptor entry. Up to 7 stacks (hardware
|
||||
* limit), all of them are 4K, except the debug stack which
|
||||
* is 8K.
|
||||
*/
|
||||
static const unsigned int exception_stack_sizes[N_EXCEPTION_STACKS] = {
|
||||
[0 ... N_EXCEPTION_STACKS - 1] = EXCEPTION_STKSZ,
|
||||
[DEBUG_STACK - 1] = DEBUG_STKSZ
|
||||
};
|
||||
|
||||
static DEFINE_PER_CPU_PAGE_ALIGNED(char, exception_stacks
|
||||
[(N_EXCEPTION_STACKS - 1) * EXCEPTION_STKSZ + DEBUG_STKSZ])
|
||||
__aligned(PAGE_SIZE);
|
||||
|
||||
extern asmlinkage void ignore_sysret(void);
|
||||
|
||||
/* May not be marked __init: used by software suspend */
|
||||
void syscall_init(void)
|
||||
{
|
||||
@ -983,7 +1034,7 @@ unsigned long kernel_eflags;
|
||||
*/
|
||||
DEFINE_PER_CPU(struct orig_ist, orig_ist);
|
||||
|
||||
#else /* x86_64 */
|
||||
#else /* CONFIG_X86_64 */
|
||||
|
||||
#ifdef CONFIG_CC_STACKPROTECTOR
|
||||
DEFINE_PER_CPU(unsigned long, stack_canary);
|
||||
@ -995,9 +1046,26 @@ struct pt_regs * __cpuinit idle_regs(struct pt_regs *regs)
|
||||
memset(regs, 0, sizeof(struct pt_regs));
|
||||
regs->fs = __KERNEL_PERCPU;
|
||||
regs->gs = __KERNEL_STACK_CANARY;
|
||||
|
||||
return regs;
|
||||
}
|
||||
#endif /* x86_64 */
|
||||
#endif /* CONFIG_X86_64 */
|
||||
|
||||
/*
|
||||
* Clear all 6 debug registers:
|
||||
*/
|
||||
static void clear_all_debug_regs(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
/* Ignore db4, db5 */
|
||||
if ((i == 4) || (i == 5))
|
||||
continue;
|
||||
|
||||
set_debugreg(0, i);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* cpu_init() initializes state that is per-CPU. Some data is already
|
||||
@ -1007,15 +1075,20 @@ struct pt_regs * __cpuinit idle_regs(struct pt_regs *regs)
|
||||
* A lot of state is already set up in PDA init for 64 bit
|
||||
*/
|
||||
#ifdef CONFIG_X86_64
|
||||
|
||||
void __cpuinit cpu_init(void)
|
||||
{
|
||||
int cpu = stack_smp_processor_id();
|
||||
struct tss_struct *t = &per_cpu(init_tss, cpu);
|
||||
struct orig_ist *orig_ist = &per_cpu(orig_ist, cpu);
|
||||
unsigned long v;
|
||||
struct orig_ist *orig_ist;
|
||||
struct task_struct *me;
|
||||
struct tss_struct *t;
|
||||
unsigned long v;
|
||||
int cpu;
|
||||
int i;
|
||||
|
||||
cpu = stack_smp_processor_id();
|
||||
t = &per_cpu(init_tss, cpu);
|
||||
orig_ist = &per_cpu(orig_ist, cpu);
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
if (cpu != 0 && percpu_read(node_number) == 0 &&
|
||||
cpu_to_node(cpu) != NUMA_NO_NODE)
|
||||
@ -1056,19 +1129,17 @@ void __cpuinit cpu_init(void)
|
||||
* set up and load the per-CPU TSS
|
||||
*/
|
||||
if (!orig_ist->ist[0]) {
|
||||
static const unsigned int sizes[N_EXCEPTION_STACKS] = {
|
||||
[0 ... N_EXCEPTION_STACKS - 1] = EXCEPTION_STKSZ,
|
||||
[DEBUG_STACK - 1] = DEBUG_STKSZ
|
||||
};
|
||||
char *estacks = per_cpu(exception_stacks, cpu);
|
||||
|
||||
for (v = 0; v < N_EXCEPTION_STACKS; v++) {
|
||||
estacks += sizes[v];
|
||||
estacks += exception_stack_sizes[v];
|
||||
orig_ist->ist[v] = t->x86_tss.ist[v] =
|
||||
(unsigned long)estacks;
|
||||
}
|
||||
}
|
||||
|
||||
t->x86_tss.io_bitmap_base = offsetof(struct tss_struct, io_bitmap);
|
||||
|
||||
/*
|
||||
* <= is required because the CPU will access up to
|
||||
* 8 bits beyond the end of the IO permission bitmap.
|
||||
@ -1097,17 +1168,7 @@ void __cpuinit cpu_init(void)
|
||||
arch_kgdb_ops.correct_hw_break();
|
||||
else
|
||||
#endif
|
||||
{
|
||||
/*
|
||||
* Clear all 6 debug registers:
|
||||
*/
|
||||
set_debugreg(0UL, 0);
|
||||
set_debugreg(0UL, 1);
|
||||
set_debugreg(0UL, 2);
|
||||
set_debugreg(0UL, 3);
|
||||
set_debugreg(0UL, 6);
|
||||
set_debugreg(0UL, 7);
|
||||
}
|
||||
clear_all_debug_regs();
|
||||
|
||||
fpu_init();
|
||||
|
||||
@ -1128,7 +1189,8 @@ void __cpuinit cpu_init(void)
|
||||
|
||||
if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask)) {
|
||||
printk(KERN_WARNING "CPU#%d already initialized!\n", cpu);
|
||||
for (;;) local_irq_enable();
|
||||
for (;;)
|
||||
local_irq_enable();
|
||||
}
|
||||
|
||||
printk(KERN_INFO "Initializing CPU#%d\n", cpu);
|
||||
@ -1157,13 +1219,7 @@ void __cpuinit cpu_init(void)
|
||||
__set_tss_desc(cpu, GDT_ENTRY_DOUBLEFAULT_TSS, &doublefault_tss);
|
||||
#endif
|
||||
|
||||
/* Clear all 6 debug registers: */
|
||||
set_debugreg(0, 0);
|
||||
set_debugreg(0, 1);
|
||||
set_debugreg(0, 2);
|
||||
set_debugreg(0, 3);
|
||||
set_debugreg(0, 6);
|
||||
set_debugreg(0, 7);
|
||||
clear_all_debug_regs();
|
||||
|
||||
/*
|
||||
* Force FPU initialization:
|
||||
@ -1183,6 +1239,4 @@ void __cpuinit cpu_init(void)
|
||||
|
||||
xsave_init();
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -5,15 +5,15 @@
|
||||
struct cpu_model_info {
|
||||
int vendor;
|
||||
int family;
|
||||
char *model_names[16];
|
||||
const char *model_names[16];
|
||||
};
|
||||
|
||||
/* attempt to consolidate cpu attributes */
|
||||
struct cpu_dev {
|
||||
char * c_vendor;
|
||||
const char * c_vendor;
|
||||
|
||||
/* some have two possibilities for cpuid string */
|
||||
char * c_ident[2];
|
||||
const char * c_ident[2];
|
||||
|
||||
struct cpu_model_info c_models[4];
|
||||
|
||||
@ -25,11 +25,12 @@ struct cpu_dev {
|
||||
};
|
||||
|
||||
#define cpu_dev_register(cpu_devX) \
|
||||
static struct cpu_dev *__cpu_dev_##cpu_devX __used \
|
||||
static const struct cpu_dev *const __cpu_dev_##cpu_devX __used \
|
||||
__attribute__((__section__(".x86_cpu_dev.init"))) = \
|
||||
&cpu_devX;
|
||||
|
||||
extern struct cpu_dev *__x86_cpu_dev_start[], *__x86_cpu_dev_end[];
|
||||
extern const struct cpu_dev *const __x86_cpu_dev_start[],
|
||||
*const __x86_cpu_dev_end[];
|
||||
|
||||
extern void display_cacheinfo(struct cpuinfo_x86 *c);
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/kprobes.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/percpu.h>
|
||||
@ -40,41 +41,41 @@ static DEFINE_MUTEX(cpu_debug_lock);
|
||||
static struct dentry *cpu_debugfs_dir;
|
||||
|
||||
static struct cpu_debug_base cpu_base[] = {
|
||||
{ "mc", CPU_MC }, /* Machine Check */
|
||||
{ "monitor", CPU_MONITOR }, /* Monitor */
|
||||
{ "time", CPU_TIME }, /* Time */
|
||||
{ "pmc", CPU_PMC }, /* Performance Monitor */
|
||||
{ "platform", CPU_PLATFORM }, /* Platform */
|
||||
{ "apic", CPU_APIC }, /* APIC */
|
||||
{ "poweron", CPU_POWERON }, /* Power-on */
|
||||
{ "control", CPU_CONTROL }, /* Control */
|
||||
{ "features", CPU_FEATURES }, /* Features control */
|
||||
{ "lastbranch", CPU_LBRANCH }, /* Last Branch */
|
||||
{ "bios", CPU_BIOS }, /* BIOS */
|
||||
{ "freq", CPU_FREQ }, /* Frequency */
|
||||
{ "mtrr", CPU_MTRR }, /* MTRR */
|
||||
{ "perf", CPU_PERF }, /* Performance */
|
||||
{ "cache", CPU_CACHE }, /* Cache */
|
||||
{ "sysenter", CPU_SYSENTER }, /* Sysenter */
|
||||
{ "therm", CPU_THERM }, /* Thermal */
|
||||
{ "misc", CPU_MISC }, /* Miscellaneous */
|
||||
{ "debug", CPU_DEBUG }, /* Debug */
|
||||
{ "pat", CPU_PAT }, /* PAT */
|
||||
{ "vmx", CPU_VMX }, /* VMX */
|
||||
{ "call", CPU_CALL }, /* System Call */
|
||||
{ "base", CPU_BASE }, /* BASE Address */
|
||||
{ "smm", CPU_SMM }, /* System mgmt mode */
|
||||
{ "svm", CPU_SVM }, /*Secure Virtial Machine*/
|
||||
{ "osvm", CPU_OSVM }, /* OS-Visible Workaround*/
|
||||
{ "tss", CPU_TSS }, /* Task Stack Segment */
|
||||
{ "cr", CPU_CR }, /* Control Registers */
|
||||
{ "dt", CPU_DT }, /* Descriptor Table */
|
||||
{ "registers", CPU_REG_ALL }, /* Select all Registers */
|
||||
{ "mc", CPU_MC, 0 },
|
||||
{ "monitor", CPU_MONITOR, 0 },
|
||||
{ "time", CPU_TIME, 0 },
|
||||
{ "pmc", CPU_PMC, 1 },
|
||||
{ "platform", CPU_PLATFORM, 0 },
|
||||
{ "apic", CPU_APIC, 0 },
|
||||
{ "poweron", CPU_POWERON, 0 },
|
||||
{ "control", CPU_CONTROL, 0 },
|
||||
{ "features", CPU_FEATURES, 0 },
|
||||
{ "lastbranch", CPU_LBRANCH, 0 },
|
||||
{ "bios", CPU_BIOS, 0 },
|
||||
{ "freq", CPU_FREQ, 0 },
|
||||
{ "mtrr", CPU_MTRR, 0 },
|
||||
{ "perf", CPU_PERF, 0 },
|
||||
{ "cache", CPU_CACHE, 0 },
|
||||
{ "sysenter", CPU_SYSENTER, 0 },
|
||||
{ "therm", CPU_THERM, 0 },
|
||||
{ "misc", CPU_MISC, 0 },
|
||||
{ "debug", CPU_DEBUG, 0 },
|
||||
{ "pat", CPU_PAT, 0 },
|
||||
{ "vmx", CPU_VMX, 0 },
|
||||
{ "call", CPU_CALL, 0 },
|
||||
{ "base", CPU_BASE, 0 },
|
||||
{ "smm", CPU_SMM, 0 },
|
||||
{ "svm", CPU_SVM, 0 },
|
||||
{ "osvm", CPU_OSVM, 0 },
|
||||
{ "tss", CPU_TSS, 0 },
|
||||
{ "cr", CPU_CR, 0 },
|
||||
{ "dt", CPU_DT, 0 },
|
||||
{ "registers", CPU_REG_ALL, 0 },
|
||||
};
|
||||
|
||||
static struct cpu_file_base cpu_file[] = {
|
||||
{ "index", CPU_REG_ALL }, /* index */
|
||||
{ "value", CPU_REG_ALL }, /* value */
|
||||
{ "index", CPU_REG_ALL, 0 },
|
||||
{ "value", CPU_REG_ALL, 1 },
|
||||
};
|
||||
|
||||
/* Intel Registers Range */
|
||||
@ -608,9 +609,62 @@ static int cpu_seq_open(struct inode *inode, struct file *file)
|
||||
return err;
|
||||
}
|
||||
|
||||
static int write_msr(struct cpu_private *priv, u64 val)
|
||||
{
|
||||
u32 low, high;
|
||||
|
||||
high = (val >> 32) & 0xffffffff;
|
||||
low = val & 0xffffffff;
|
||||
|
||||
if (!wrmsr_safe_on_cpu(priv->cpu, priv->reg, low, high))
|
||||
return 0;
|
||||
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
static int write_cpu_register(struct cpu_private *priv, const char *buf)
|
||||
{
|
||||
int ret = -EPERM;
|
||||
u64 val;
|
||||
|
||||
ret = strict_strtoull(buf, 0, &val);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* Supporting only MSRs */
|
||||
if (priv->type < CPU_TSS_BIT)
|
||||
return write_msr(priv, val);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static ssize_t cpu_write(struct file *file, const char __user *ubuf,
|
||||
size_t count, loff_t *off)
|
||||
{
|
||||
struct seq_file *seq = file->private_data;
|
||||
struct cpu_private *priv = seq->private;
|
||||
char buf[19];
|
||||
|
||||
if ((priv == NULL) || (count >= sizeof(buf)))
|
||||
return -EINVAL;
|
||||
|
||||
if (copy_from_user(&buf, ubuf, count))
|
||||
return -EFAULT;
|
||||
|
||||
buf[count] = 0;
|
||||
|
||||
if ((cpu_base[priv->type].write) && (cpu_file[priv->file].write))
|
||||
if (!write_cpu_register(priv, buf))
|
||||
return count;
|
||||
|
||||
return -EACCES;
|
||||
}
|
||||
|
||||
static const struct file_operations cpu_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = cpu_seq_open,
|
||||
.read = seq_read,
|
||||
.write = cpu_write,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
@ -61,23 +61,23 @@ static void __cpuinit do_cyrix_devid(unsigned char *dir0, unsigned char *dir1)
|
||||
*/
|
||||
static unsigned char Cx86_dir0_msb __cpuinitdata = 0;
|
||||
|
||||
static char Cx86_model[][9] __cpuinitdata = {
|
||||
static const char __cpuinitconst Cx86_model[][9] = {
|
||||
"Cx486", "Cx486", "5x86 ", "6x86", "MediaGX ", "6x86MX ",
|
||||
"M II ", "Unknown"
|
||||
};
|
||||
static char Cx486_name[][5] __cpuinitdata = {
|
||||
static const char __cpuinitconst Cx486_name[][5] = {
|
||||
"SLC", "DLC", "SLC2", "DLC2", "SRx", "DRx",
|
||||
"SRx2", "DRx2"
|
||||
};
|
||||
static char Cx486S_name[][4] __cpuinitdata = {
|
||||
static const char __cpuinitconst Cx486S_name[][4] = {
|
||||
"S", "S2", "Se", "S2e"
|
||||
};
|
||||
static char Cx486D_name[][4] __cpuinitdata = {
|
||||
static const char __cpuinitconst Cx486D_name[][4] = {
|
||||
"DX", "DX2", "?", "?", "?", "DX4"
|
||||
};
|
||||
static char Cx86_cb[] __cpuinitdata = "?.5x Core/Bus Clock";
|
||||
static char cyrix_model_mult1[] __cpuinitdata = "12??43";
|
||||
static char cyrix_model_mult2[] __cpuinitdata = "12233445";
|
||||
static const char __cpuinitconst cyrix_model_mult1[] = "12??43";
|
||||
static const char __cpuinitconst cyrix_model_mult2[] = "12233445";
|
||||
|
||||
/*
|
||||
* Reset the slow-loop (SLOP) bit on the 686(L) which is set by some old
|
||||
@ -435,7 +435,7 @@ static void __cpuinit cyrix_identify(struct cpuinfo_x86 *c)
|
||||
}
|
||||
}
|
||||
|
||||
static struct cpu_dev cyrix_cpu_dev __cpuinitdata = {
|
||||
static const struct cpu_dev __cpuinitconst cyrix_cpu_dev = {
|
||||
.c_vendor = "Cyrix",
|
||||
.c_ident = { "CyrixInstead" },
|
||||
.c_early_init = early_init_cyrix,
|
||||
@ -446,7 +446,7 @@ static struct cpu_dev cyrix_cpu_dev __cpuinitdata = {
|
||||
|
||||
cpu_dev_register(cyrix_cpu_dev);
|
||||
|
||||
static struct cpu_dev nsc_cpu_dev __cpuinitdata = {
|
||||
static const struct cpu_dev __cpuinitconst nsc_cpu_dev = {
|
||||
.c_vendor = "NSC",
|
||||
.c_ident = { "Geode by NSC" },
|
||||
.c_init = init_nsc,
|
||||
|
@ -54,6 +54,11 @@ static void __cpuinit early_init_intel(struct cpuinfo_x86 *c)
|
||||
c->x86_cache_alignment = 128;
|
||||
#endif
|
||||
|
||||
/* CPUID workaround for 0F33/0F34 CPU */
|
||||
if (c->x86 == 0xF && c->x86_model == 0x3
|
||||
&& (c->x86_mask == 0x3 || c->x86_mask == 0x4))
|
||||
c->x86_phys_bits = 36;
|
||||
|
||||
/*
|
||||
* c->x86_power is 8000_0007 edx. Bit 8 is TSC runs at constant rate
|
||||
* with P/T states and does not stop in deep C-states
|
||||
@ -410,7 +415,7 @@ static unsigned int __cpuinit intel_size_cache(struct cpuinfo_x86 *c, unsigned i
|
||||
}
|
||||
#endif
|
||||
|
||||
static struct cpu_dev intel_cpu_dev __cpuinitdata = {
|
||||
static const struct cpu_dev __cpuinitconst intel_cpu_dev = {
|
||||
.c_vendor = "Intel",
|
||||
.c_ident = { "GenuineIntel" },
|
||||
#ifdef CONFIG_X86_32
|
||||
|
@ -32,7 +32,7 @@ struct _cache_table
|
||||
};
|
||||
|
||||
/* all the cache descriptor types we care about (no TLB or trace cache entries) */
|
||||
static struct _cache_table cache_table[] __cpuinitdata =
|
||||
static const struct _cache_table __cpuinitconst cache_table[] =
|
||||
{
|
||||
{ 0x06, LVL_1_INST, 8 }, /* 4-way set assoc, 32 byte line size */
|
||||
{ 0x08, LVL_1_INST, 16 }, /* 4-way set assoc, 32 byte line size */
|
||||
@ -206,15 +206,15 @@ union l3_cache {
|
||||
unsigned val;
|
||||
};
|
||||
|
||||
static unsigned short assocs[] __cpuinitdata = {
|
||||
static const unsigned short __cpuinitconst assocs[] = {
|
||||
[1] = 1, [2] = 2, [4] = 4, [6] = 8,
|
||||
[8] = 16, [0xa] = 32, [0xb] = 48,
|
||||
[0xc] = 64,
|
||||
[0xf] = 0xffff // ??
|
||||
};
|
||||
|
||||
static unsigned char levels[] __cpuinitdata = { 1, 1, 2, 3 };
|
||||
static unsigned char types[] __cpuinitdata = { 1, 2, 3, 3 };
|
||||
static const unsigned char __cpuinitconst levels[] = { 1, 1, 2, 3 };
|
||||
static const unsigned char __cpuinitconst types[] = { 1, 2, 3, 3 };
|
||||
|
||||
static void __cpuinit
|
||||
amd_cpuid4(int leaf, union _cpuid4_leaf_eax *eax,
|
||||
|
@ -98,7 +98,7 @@ static void __cpuinit init_transmeta(struct cpuinfo_x86 *c)
|
||||
#endif
|
||||
}
|
||||
|
||||
static struct cpu_dev transmeta_cpu_dev __cpuinitdata = {
|
||||
static const struct cpu_dev __cpuinitconst transmeta_cpu_dev = {
|
||||
.c_vendor = "Transmeta",
|
||||
.c_ident = { "GenuineTMx86", "TransmetaCPU" },
|
||||
.c_early_init = early_init_transmeta,
|
||||
|
@ -8,7 +8,7 @@
|
||||
* so no special init takes place.
|
||||
*/
|
||||
|
||||
static struct cpu_dev umc_cpu_dev __cpuinitdata = {
|
||||
static const struct cpu_dev __cpuinitconst umc_cpu_dev = {
|
||||
.c_vendor = "UMC",
|
||||
.c_ident = { "UMC UMC UMC" },
|
||||
.c_models = {
|
||||
|
@ -110,19 +110,25 @@ int __init e820_all_mapped(u64 start, u64 end, unsigned type)
|
||||
/*
|
||||
* Add a memory region to the kernel e820 map.
|
||||
*/
|
||||
void __init e820_add_region(u64 start, u64 size, int type)
|
||||
static void __init __e820_add_region(struct e820map *e820x, u64 start, u64 size,
|
||||
int type)
|
||||
{
|
||||
int x = e820.nr_map;
|
||||
int x = e820x->nr_map;
|
||||
|
||||
if (x == ARRAY_SIZE(e820.map)) {
|
||||
if (x == ARRAY_SIZE(e820x->map)) {
|
||||
printk(KERN_ERR "Ooops! Too many entries in the memory map!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
e820.map[x].addr = start;
|
||||
e820.map[x].size = size;
|
||||
e820.map[x].type = type;
|
||||
e820.nr_map++;
|
||||
e820x->map[x].addr = start;
|
||||
e820x->map[x].size = size;
|
||||
e820x->map[x].type = type;
|
||||
e820x->nr_map++;
|
||||
}
|
||||
|
||||
void __init e820_add_region(u64 start, u64 size, int type)
|
||||
{
|
||||
__e820_add_region(&e820, start, size, type);
|
||||
}
|
||||
|
||||
void __init e820_print_map(char *who)
|
||||
@ -417,11 +423,11 @@ static int __init append_e820_map(struct e820entry *biosmap, int nr_map)
|
||||
return __append_e820_map(biosmap, nr_map);
|
||||
}
|
||||
|
||||
static u64 __init e820_update_range_map(struct e820map *e820x, u64 start,
|
||||
static u64 __init __e820_update_range(struct e820map *e820x, u64 start,
|
||||
u64 size, unsigned old_type,
|
||||
unsigned new_type)
|
||||
{
|
||||
int i;
|
||||
unsigned int i;
|
||||
u64 real_updated_size = 0;
|
||||
|
||||
BUG_ON(old_type == new_type);
|
||||
@ -429,7 +435,7 @@ static u64 __init e820_update_range_map(struct e820map *e820x, u64 start,
|
||||
if (size > (ULLONG_MAX - start))
|
||||
size = ULLONG_MAX - start;
|
||||
|
||||
for (i = 0; i < e820.nr_map; i++) {
|
||||
for (i = 0; i < e820x->nr_map; i++) {
|
||||
struct e820entry *ei = &e820x->map[i];
|
||||
u64 final_start, final_end;
|
||||
if (ei->type != old_type)
|
||||
@ -446,10 +452,16 @@ static u64 __init e820_update_range_map(struct e820map *e820x, u64 start,
|
||||
final_end = min(start + size, ei->addr + ei->size);
|
||||
if (final_start >= final_end)
|
||||
continue;
|
||||
e820_add_region(final_start, final_end - final_start,
|
||||
new_type);
|
||||
|
||||
__e820_add_region(e820x, final_start, final_end - final_start,
|
||||
new_type);
|
||||
|
||||
real_updated_size += final_end - final_start;
|
||||
|
||||
/*
|
||||
* left range could be head or tail, so need to update
|
||||
* size at first.
|
||||
*/
|
||||
ei->size -= final_end - final_start;
|
||||
if (ei->addr < final_start)
|
||||
continue;
|
||||
@ -461,13 +473,13 @@ static u64 __init e820_update_range_map(struct e820map *e820x, u64 start,
|
||||
u64 __init e820_update_range(u64 start, u64 size, unsigned old_type,
|
||||
unsigned new_type)
|
||||
{
|
||||
return e820_update_range_map(&e820, start, size, old_type, new_type);
|
||||
return __e820_update_range(&e820, start, size, old_type, new_type);
|
||||
}
|
||||
|
||||
static u64 __init e820_update_range_saved(u64 start, u64 size,
|
||||
unsigned old_type, unsigned new_type)
|
||||
{
|
||||
return e820_update_range_map(&e820_saved, start, size, old_type,
|
||||
return __e820_update_range(&e820_saved, start, size, old_type,
|
||||
new_type);
|
||||
}
|
||||
|
||||
@ -1020,8 +1032,8 @@ u64 __init find_e820_area_size(u64 start, u64 *sizep, u64 align)
|
||||
continue;
|
||||
return addr;
|
||||
}
|
||||
return -1UL;
|
||||
|
||||
return -1ULL;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1034,13 +1046,22 @@ u64 __init early_reserve_e820(u64 startt, u64 sizet, u64 align)
|
||||
u64 start;
|
||||
|
||||
start = startt;
|
||||
while (size < sizet)
|
||||
while (size < sizet && (start + 1))
|
||||
start = find_e820_area_size(start, &size, align);
|
||||
|
||||
if (size < sizet)
|
||||
return 0;
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
if (start >= MAXMEM)
|
||||
return 0;
|
||||
if (start + size > MAXMEM)
|
||||
size = MAXMEM - start;
|
||||
#endif
|
||||
|
||||
addr = round_down(start + size - sizet, align);
|
||||
if (addr < start)
|
||||
return 0;
|
||||
e820_update_range(addr, sizet, E820_RAM, E820_RESERVED);
|
||||
e820_update_range_saved(addr, sizet, E820_RAM, E820_RESERVED);
|
||||
printk(KERN_INFO "update e820 for early_reserve_e820\n");
|
||||
|
@ -250,7 +250,7 @@ static int dbgp_wait_until_complete(void)
|
||||
return (ctrl & DBGP_ERROR) ? -DBGP_ERRCODE(ctrl) : DBGP_LEN(ctrl);
|
||||
}
|
||||
|
||||
static void dbgp_mdelay(int ms)
|
||||
static void __init dbgp_mdelay(int ms)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -311,7 +311,7 @@ static void dbgp_set_data(const void *buf, int size)
|
||||
writel(hi, &ehci_debug->data47);
|
||||
}
|
||||
|
||||
static void dbgp_get_data(void *buf, int size)
|
||||
static void __init dbgp_get_data(void *buf, int size)
|
||||
{
|
||||
unsigned char *bytes = buf;
|
||||
u32 lo, hi;
|
||||
@ -355,7 +355,7 @@ static int dbgp_bulk_write(unsigned devnum, unsigned endpoint,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int dbgp_bulk_read(unsigned devnum, unsigned endpoint, void *data,
|
||||
static int __init dbgp_bulk_read(unsigned devnum, unsigned endpoint, void *data,
|
||||
int size)
|
||||
{
|
||||
u32 pids, addr, ctrl;
|
||||
@ -386,8 +386,8 @@ static int dbgp_bulk_read(unsigned devnum, unsigned endpoint, void *data,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int dbgp_control_msg(unsigned devnum, int requesttype, int request,
|
||||
int value, int index, void *data, int size)
|
||||
static int __init dbgp_control_msg(unsigned devnum, int requesttype,
|
||||
int request, int value, int index, void *data, int size)
|
||||
{
|
||||
u32 pids, addr, ctrl;
|
||||
struct usb_ctrlrequest req;
|
||||
@ -489,7 +489,7 @@ static u32 __init find_dbgp(int ehci_num, u32 *rbus, u32 *rslot, u32 *rfunc)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ehci_reset_port(int port)
|
||||
static int __init ehci_reset_port(int port)
|
||||
{
|
||||
u32 portsc;
|
||||
u32 delay_time, delay;
|
||||
@ -532,7 +532,7 @@ static int ehci_reset_port(int port)
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
static int ehci_wait_for_port(int port)
|
||||
static int __init ehci_wait_for_port(int port)
|
||||
{
|
||||
u32 status;
|
||||
int ret, reps;
|
||||
@ -557,13 +557,13 @@ static inline void dbgp_printk(const char *fmt, ...) { }
|
||||
|
||||
typedef void (*set_debug_port_t)(int port);
|
||||
|
||||
static void default_set_debug_port(int port)
|
||||
static void __init default_set_debug_port(int port)
|
||||
{
|
||||
}
|
||||
|
||||
static set_debug_port_t set_debug_port = default_set_debug_port;
|
||||
static set_debug_port_t __initdata set_debug_port = default_set_debug_port;
|
||||
|
||||
static void nvidia_set_debug_port(int port)
|
||||
static void __init nvidia_set_debug_port(int port)
|
||||
{
|
||||
u32 dword;
|
||||
dword = read_pci_config(ehci_dev.bus, ehci_dev.slot, ehci_dev.func,
|
||||
|
@ -442,8 +442,7 @@ sysenter_past_esp:
|
||||
|
||||
GET_THREAD_INFO(%ebp)
|
||||
|
||||
/* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */
|
||||
testw $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
|
||||
testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
|
||||
jnz sysenter_audit
|
||||
sysenter_do_call:
|
||||
cmpl $(nr_syscalls), %eax
|
||||
@ -454,7 +453,7 @@ sysenter_do_call:
|
||||
DISABLE_INTERRUPTS(CLBR_ANY)
|
||||
TRACE_IRQS_OFF
|
||||
movl TI_flags(%ebp), %ecx
|
||||
testw $_TIF_ALLWORK_MASK, %cx
|
||||
testl $_TIF_ALLWORK_MASK, %ecx
|
||||
jne sysexit_audit
|
||||
sysenter_exit:
|
||||
/* if something modifies registers it must also disable sysexit */
|
||||
@ -468,7 +467,7 @@ sysenter_exit:
|
||||
|
||||
#ifdef CONFIG_AUDITSYSCALL
|
||||
sysenter_audit:
|
||||
testw $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags(%ebp)
|
||||
testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags(%ebp)
|
||||
jnz syscall_trace_entry
|
||||
addl $4,%esp
|
||||
CFI_ADJUST_CFA_OFFSET -4
|
||||
@ -485,7 +484,7 @@ sysenter_audit:
|
||||
jmp sysenter_do_call
|
||||
|
||||
sysexit_audit:
|
||||
testw $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %cx
|
||||
testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %ecx
|
||||
jne syscall_exit_work
|
||||
TRACE_IRQS_ON
|
||||
ENABLE_INTERRUPTS(CLBR_ANY)
|
||||
@ -498,7 +497,7 @@ sysexit_audit:
|
||||
DISABLE_INTERRUPTS(CLBR_ANY)
|
||||
TRACE_IRQS_OFF
|
||||
movl TI_flags(%ebp), %ecx
|
||||
testw $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %cx
|
||||
testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT), %ecx
|
||||
jne syscall_exit_work
|
||||
movl PT_EAX(%esp),%eax /* reload syscall return value */
|
||||
jmp sysenter_exit
|
||||
@ -523,8 +522,7 @@ ENTRY(system_call)
|
||||
SAVE_ALL
|
||||
GET_THREAD_INFO(%ebp)
|
||||
# system call tracing in operation / emulation
|
||||
/* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */
|
||||
testw $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
|
||||
testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)
|
||||
jnz syscall_trace_entry
|
||||
cmpl $(nr_syscalls), %eax
|
||||
jae syscall_badsys
|
||||
@ -538,7 +536,7 @@ syscall_exit:
|
||||
# between sampling and the iret
|
||||
TRACE_IRQS_OFF
|
||||
movl TI_flags(%ebp), %ecx
|
||||
testw $_TIF_ALLWORK_MASK, %cx # current->work
|
||||
testl $_TIF_ALLWORK_MASK, %ecx # current->work
|
||||
jne syscall_exit_work
|
||||
|
||||
restore_all:
|
||||
@ -673,7 +671,7 @@ END(syscall_trace_entry)
|
||||
# perform syscall exit tracing
|
||||
ALIGN
|
||||
syscall_exit_work:
|
||||
testb $_TIF_WORK_SYSCALL_EXIT, %cl
|
||||
testl $_TIF_WORK_SYSCALL_EXIT, %ecx
|
||||
jz work_pending
|
||||
TRACE_IRQS_ON
|
||||
ENABLE_INTERRUPTS(CLBR_ANY) # could let syscall_trace_leave() call
|
||||
|
@ -368,6 +368,7 @@ ENTRY(save_rest)
|
||||
END(save_rest)
|
||||
|
||||
/* save complete stack frame */
|
||||
.pushsection .kprobes.text, "ax"
|
||||
ENTRY(save_paranoid)
|
||||
XCPT_FRAME 1 RDI+8
|
||||
cld
|
||||
@ -396,6 +397,7 @@ ENTRY(save_paranoid)
|
||||
1: ret
|
||||
CFI_ENDPROC
|
||||
END(save_paranoid)
|
||||
.popsection
|
||||
|
||||
/*
|
||||
* A newly forked process directly context switches into this address.
|
||||
@ -416,7 +418,6 @@ ENTRY(ret_from_fork)
|
||||
|
||||
GET_THREAD_INFO(%rcx)
|
||||
|
||||
CFI_REMEMBER_STATE
|
||||
RESTORE_REST
|
||||
|
||||
testl $3, CS-ARGOFFSET(%rsp) # from kernel_thread?
|
||||
@ -428,7 +429,6 @@ ENTRY(ret_from_fork)
|
||||
RESTORE_TOP_OF_STACK %rdi, -ARGOFFSET
|
||||
jmp ret_from_sys_call # go to the SYSRET fastpath
|
||||
|
||||
CFI_RESTORE_STATE
|
||||
CFI_ENDPROC
|
||||
END(ret_from_fork)
|
||||
|
||||
|
@ -45,16 +45,16 @@ void ack_bad_irq(unsigned int irq)
|
||||
/*
|
||||
* /proc/interrupts printing:
|
||||
*/
|
||||
static int show_other_interrupts(struct seq_file *p)
|
||||
static int show_other_interrupts(struct seq_file *p, int prec)
|
||||
{
|
||||
int j;
|
||||
|
||||
seq_printf(p, "NMI: ");
|
||||
seq_printf(p, "%*s: ", prec, "NMI");
|
||||
for_each_online_cpu(j)
|
||||
seq_printf(p, "%10u ", irq_stats(j)->__nmi_count);
|
||||
seq_printf(p, " Non-maskable interrupts\n");
|
||||
#ifdef CONFIG_X86_LOCAL_APIC
|
||||
seq_printf(p, "LOC: ");
|
||||
seq_printf(p, "%*s: ", prec, "LOC");
|
||||
for_each_online_cpu(j)
|
||||
seq_printf(p, "%10u ", irq_stats(j)->apic_timer_irqs);
|
||||
seq_printf(p, " Local timer interrupts\n");
|
||||
@ -66,40 +66,40 @@ static int show_other_interrupts(struct seq_file *p)
|
||||
seq_printf(p, " Platform interrupts\n");
|
||||
}
|
||||
#ifdef CONFIG_SMP
|
||||
seq_printf(p, "RES: ");
|
||||
seq_printf(p, "%*s: ", prec, "RES");
|
||||
for_each_online_cpu(j)
|
||||
seq_printf(p, "%10u ", irq_stats(j)->irq_resched_count);
|
||||
seq_printf(p, " Rescheduling interrupts\n");
|
||||
seq_printf(p, "CAL: ");
|
||||
seq_printf(p, "%*s: ", prec, "CAL");
|
||||
for_each_online_cpu(j)
|
||||
seq_printf(p, "%10u ", irq_stats(j)->irq_call_count);
|
||||
seq_printf(p, " Function call interrupts\n");
|
||||
seq_printf(p, "TLB: ");
|
||||
seq_printf(p, "%*s: ", prec, "TLB");
|
||||
for_each_online_cpu(j)
|
||||
seq_printf(p, "%10u ", irq_stats(j)->irq_tlb_count);
|
||||
seq_printf(p, " TLB shootdowns\n");
|
||||
#endif
|
||||
#ifdef CONFIG_X86_MCE
|
||||
seq_printf(p, "TRM: ");
|
||||
seq_printf(p, "%*s: ", prec, "TRM");
|
||||
for_each_online_cpu(j)
|
||||
seq_printf(p, "%10u ", irq_stats(j)->irq_thermal_count);
|
||||
seq_printf(p, " Thermal event interrupts\n");
|
||||
# ifdef CONFIG_X86_64
|
||||
seq_printf(p, "THR: ");
|
||||
seq_printf(p, "%*s: ", prec, "THR");
|
||||
for_each_online_cpu(j)
|
||||
seq_printf(p, "%10u ", irq_stats(j)->irq_threshold_count);
|
||||
seq_printf(p, " Threshold APIC interrupts\n");
|
||||
# endif
|
||||
#endif
|
||||
#ifdef CONFIG_X86_LOCAL_APIC
|
||||
seq_printf(p, "SPU: ");
|
||||
seq_printf(p, "%*s: ", prec, "SPU");
|
||||
for_each_online_cpu(j)
|
||||
seq_printf(p, "%10u ", irq_stats(j)->irq_spurious_count);
|
||||
seq_printf(p, " Spurious interrupts\n");
|
||||
#endif
|
||||
seq_printf(p, "ERR: %10u\n", atomic_read(&irq_err_count));
|
||||
seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count));
|
||||
#if defined(CONFIG_X86_IO_APIC)
|
||||
seq_printf(p, "MIS: %10u\n", atomic_read(&irq_mis_count));
|
||||
seq_printf(p, "%*s: %10u\n", prec, "MIS", atomic_read(&irq_mis_count));
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
@ -107,19 +107,22 @@ static int show_other_interrupts(struct seq_file *p)
|
||||
int show_interrupts(struct seq_file *p, void *v)
|
||||
{
|
||||
unsigned long flags, any_count = 0;
|
||||
int i = *(loff_t *) v, j;
|
||||
int i = *(loff_t *) v, j, prec;
|
||||
struct irqaction *action;
|
||||
struct irq_desc *desc;
|
||||
|
||||
if (i > nr_irqs)
|
||||
return 0;
|
||||
|
||||
for (prec = 3, j = 1000; prec < 10 && j <= nr_irqs; ++prec)
|
||||
j *= 10;
|
||||
|
||||
if (i == nr_irqs)
|
||||
return show_other_interrupts(p);
|
||||
return show_other_interrupts(p, prec);
|
||||
|
||||
/* print header */
|
||||
if (i == 0) {
|
||||
seq_printf(p, " ");
|
||||
seq_printf(p, "%*s", prec + 8, "");
|
||||
for_each_online_cpu(j)
|
||||
seq_printf(p, "CPU%-8d", j);
|
||||
seq_putc(p, '\n');
|
||||
@ -140,7 +143,7 @@ int show_interrupts(struct seq_file *p, void *v)
|
||||
if (!action && !any_count)
|
||||
goto out;
|
||||
|
||||
seq_printf(p, "%3d: ", i);
|
||||
seq_printf(p, "%*d: ", prec, i);
|
||||
#ifndef CONFIG_SMP
|
||||
seq_printf(p, "%10u ", kstat_irqs(i));
|
||||
#else
|
||||
|
@ -226,7 +226,7 @@ static int __devinit set_check_enable_amd_mmconf(const struct dmi_system_id *d)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct dmi_system_id __devinitdata mmconf_dmi_table[] = {
|
||||
static const struct dmi_system_id __cpuinitconst mmconf_dmi_table[] = {
|
||||
{
|
||||
.callback = set_check_enable_amd_mmconf,
|
||||
.ident = "Sun Microsystems Machine",
|
||||
|
@ -890,12 +890,12 @@ static int __init replace_intsrc_all(struct mpc_table *mpc,
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
struct mpc_intsrc *m = (struct mpc_intsrc *)mpt;
|
||||
|
||||
printk(KERN_INFO "OLD ");
|
||||
apic_printk(APIC_VERBOSE, "OLD ");
|
||||
print_MP_intsrc_info(m);
|
||||
i = get_MP_intsrc_index(m);
|
||||
if (i > 0) {
|
||||
assign_to_mpc_intsrc(&mp_irqs[i], m);
|
||||
printk(KERN_INFO "NEW ");
|
||||
apic_printk(APIC_VERBOSE, "NEW ");
|
||||
print_mp_irq_info(&mp_irqs[i]);
|
||||
} else if (!i) {
|
||||
/* legacy, do nothing */
|
||||
@ -943,7 +943,7 @@ static int __init replace_intsrc_all(struct mpc_table *mpc,
|
||||
continue;
|
||||
|
||||
if (nr_m_spare > 0) {
|
||||
printk(KERN_INFO "*NEW* found ");
|
||||
apic_printk(APIC_VERBOSE, "*NEW* found\n");
|
||||
nr_m_spare--;
|
||||
assign_to_mpc_intsrc(&mp_irqs[i], m_spare[nr_m_spare]);
|
||||
m_spare[nr_m_spare] = NULL;
|
||||
|
@ -685,9 +685,8 @@ static int ptrace_bts_config(struct task_struct *child,
|
||||
if (!cfg.signal)
|
||||
return -EINVAL;
|
||||
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
child->thread.bts_ovfl_signal = cfg.signal;
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
if ((cfg.flags & PTRACE_BTS_O_ALLOC) &&
|
||||
|
@ -1,30 +1,38 @@
|
||||
/* Copyright 2002 Andi Kleen */
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/dwarf2.h>
|
||||
|
||||
#include <asm/cpufeature.h>
|
||||
#include <asm/dwarf2.h>
|
||||
|
||||
/*
|
||||
* memcpy - Copy a memory block.
|
||||
*
|
||||
* Input:
|
||||
* rdi destination
|
||||
* rsi source
|
||||
* rdx count
|
||||
*
|
||||
* Input:
|
||||
* rdi destination
|
||||
* rsi source
|
||||
* rdx count
|
||||
*
|
||||
* Output:
|
||||
* rax original destination
|
||||
*/
|
||||
*/
|
||||
|
||||
/*
|
||||
* memcpy_c() - fast string ops (REP MOVSQ) based variant.
|
||||
*
|
||||
* Calls to this get patched into the kernel image via the
|
||||
* alternative instructions framework:
|
||||
*/
|
||||
ALIGN
|
||||
memcpy_c:
|
||||
CFI_STARTPROC
|
||||
movq %rdi,%rax
|
||||
movl %edx,%ecx
|
||||
shrl $3,%ecx
|
||||
andl $7,%edx
|
||||
movq %rdi, %rax
|
||||
|
||||
movl %edx, %ecx
|
||||
shrl $3, %ecx
|
||||
andl $7, %edx
|
||||
rep movsq
|
||||
movl %edx,%ecx
|
||||
movl %edx, %ecx
|
||||
rep movsb
|
||||
ret
|
||||
CFI_ENDPROC
|
||||
@ -33,99 +41,110 @@ ENDPROC(memcpy_c)
|
||||
ENTRY(__memcpy)
|
||||
ENTRY(memcpy)
|
||||
CFI_STARTPROC
|
||||
pushq %rbx
|
||||
CFI_ADJUST_CFA_OFFSET 8
|
||||
CFI_REL_OFFSET rbx, 0
|
||||
movq %rdi,%rax
|
||||
|
||||
movl %edx,%ecx
|
||||
shrl $6,%ecx
|
||||
/*
|
||||
* Put the number of full 64-byte blocks into %ecx.
|
||||
* Tail portion is handled at the end:
|
||||
*/
|
||||
movq %rdi, %rax
|
||||
movl %edx, %ecx
|
||||
shrl $6, %ecx
|
||||
jz .Lhandle_tail
|
||||
|
||||
.p2align 4
|
||||
.Lloop_64:
|
||||
/*
|
||||
* We decrement the loop index here - and the zero-flag is
|
||||
* checked at the end of the loop (instructions inbetween do
|
||||
* not change the zero flag):
|
||||
*/
|
||||
decl %ecx
|
||||
|
||||
movq (%rsi),%r11
|
||||
movq 8(%rsi),%r8
|
||||
/*
|
||||
* Move in blocks of 4x16 bytes:
|
||||
*/
|
||||
movq 0*8(%rsi), %r11
|
||||
movq 1*8(%rsi), %r8
|
||||
movq %r11, 0*8(%rdi)
|
||||
movq %r8, 1*8(%rdi)
|
||||
|
||||
movq %r11,(%rdi)
|
||||
movq %r8,1*8(%rdi)
|
||||
movq 2*8(%rsi), %r9
|
||||
movq 3*8(%rsi), %r10
|
||||
movq %r9, 2*8(%rdi)
|
||||
movq %r10, 3*8(%rdi)
|
||||
|
||||
movq 2*8(%rsi),%r9
|
||||
movq 3*8(%rsi),%r10
|
||||
movq 4*8(%rsi), %r11
|
||||
movq 5*8(%rsi), %r8
|
||||
movq %r11, 4*8(%rdi)
|
||||
movq %r8, 5*8(%rdi)
|
||||
|
||||
movq %r9,2*8(%rdi)
|
||||
movq %r10,3*8(%rdi)
|
||||
movq 6*8(%rsi), %r9
|
||||
movq 7*8(%rsi), %r10
|
||||
movq %r9, 6*8(%rdi)
|
||||
movq %r10, 7*8(%rdi)
|
||||
|
||||
movq 4*8(%rsi),%r11
|
||||
movq 5*8(%rsi),%r8
|
||||
leaq 64(%rsi), %rsi
|
||||
leaq 64(%rdi), %rdi
|
||||
|
||||
movq %r11,4*8(%rdi)
|
||||
movq %r8,5*8(%rdi)
|
||||
|
||||
movq 6*8(%rsi),%r9
|
||||
movq 7*8(%rsi),%r10
|
||||
|
||||
movq %r9,6*8(%rdi)
|
||||
movq %r10,7*8(%rdi)
|
||||
|
||||
leaq 64(%rsi),%rsi
|
||||
leaq 64(%rdi),%rdi
|
||||
jnz .Lloop_64
|
||||
|
||||
.Lhandle_tail:
|
||||
movl %edx,%ecx
|
||||
andl $63,%ecx
|
||||
shrl $3,%ecx
|
||||
movl %edx, %ecx
|
||||
andl $63, %ecx
|
||||
shrl $3, %ecx
|
||||
jz .Lhandle_7
|
||||
|
||||
.p2align 4
|
||||
.Lloop_8:
|
||||
decl %ecx
|
||||
movq (%rsi),%r8
|
||||
movq %r8,(%rdi)
|
||||
leaq 8(%rdi),%rdi
|
||||
leaq 8(%rsi),%rsi
|
||||
movq (%rsi), %r8
|
||||
movq %r8, (%rdi)
|
||||
leaq 8(%rdi), %rdi
|
||||
leaq 8(%rsi), %rsi
|
||||
jnz .Lloop_8
|
||||
|
||||
.Lhandle_7:
|
||||
movl %edx,%ecx
|
||||
andl $7,%ecx
|
||||
jz .Lende
|
||||
movl %edx, %ecx
|
||||
andl $7, %ecx
|
||||
jz .Lend
|
||||
|
||||
.p2align 4
|
||||
.Lloop_1:
|
||||
movb (%rsi),%r8b
|
||||
movb %r8b,(%rdi)
|
||||
movb (%rsi), %r8b
|
||||
movb %r8b, (%rdi)
|
||||
incq %rdi
|
||||
incq %rsi
|
||||
decl %ecx
|
||||
jnz .Lloop_1
|
||||
|
||||
.Lende:
|
||||
popq %rbx
|
||||
CFI_ADJUST_CFA_OFFSET -8
|
||||
CFI_RESTORE rbx
|
||||
.Lend:
|
||||
ret
|
||||
.Lfinal:
|
||||
CFI_ENDPROC
|
||||
ENDPROC(memcpy)
|
||||
ENDPROC(__memcpy)
|
||||
|
||||
/* Some CPUs run faster using the string copy instructions.
|
||||
It is also a lot simpler. Use this when possible */
|
||||
/*
|
||||
* Some CPUs run faster using the string copy instructions.
|
||||
* It is also a lot simpler. Use this when possible:
|
||||
*/
|
||||
|
||||
.section .altinstr_replacement,"ax"
|
||||
.section .altinstr_replacement, "ax"
|
||||
1: .byte 0xeb /* jmp <disp8> */
|
||||
.byte (memcpy_c - memcpy) - (2f - 1b) /* offset */
|
||||
2:
|
||||
.previous
|
||||
.section .altinstructions,"a"
|
||||
|
||||
.section .altinstructions, "a"
|
||||
.align 8
|
||||
.quad memcpy
|
||||
.quad 1b
|
||||
.byte X86_FEATURE_REP_GOOD
|
||||
/* Replace only beginning, memcpy is used to apply alternatives, so it
|
||||
* is silly to overwrite itself with nops - reboot is only outcome... */
|
||||
|
||||
/*
|
||||
* Replace only beginning, memcpy is used to apply alternatives,
|
||||
* so it is silly to overwrite itself with nops - reboot is the
|
||||
* only outcome...
|
||||
*/
|
||||
.byte 2b - 1b
|
||||
.byte 2b - 1b
|
||||
.previous
|
||||
|
@ -121,24 +121,8 @@ void kunmap_atomic(void *kvaddr, enum km_type type)
|
||||
pagefault_enable();
|
||||
}
|
||||
|
||||
void *kmap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot)
|
||||
{
|
||||
enum fixed_addresses idx;
|
||||
unsigned long vaddr;
|
||||
|
||||
pagefault_disable();
|
||||
|
||||
debug_kmap_atomic_prot(type);
|
||||
|
||||
idx = type + KM_TYPE_NR * smp_processor_id();
|
||||
vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
|
||||
set_pte(kmap_pte - idx, pfn_pte(pfn, prot));
|
||||
arch_flush_lazy_mmu_mode();
|
||||
|
||||
return (void*) vaddr;
|
||||
}
|
||||
|
||||
/* This is the same as kmap_atomic() but can map memory that doesn't
|
||||
/*
|
||||
* This is the same as kmap_atomic() but can map memory that doesn't
|
||||
* have a struct page associated with it.
|
||||
*/
|
||||
void *kmap_atomic_pfn(unsigned long pfn, enum km_type type)
|
||||
|
@ -94,9 +94,9 @@ struct map_range {
|
||||
#define NR_RANGE_MR 5
|
||||
#endif
|
||||
|
||||
static int save_mr(struct map_range *mr, int nr_range,
|
||||
unsigned long start_pfn, unsigned long end_pfn,
|
||||
unsigned long page_size_mask)
|
||||
static int __meminit save_mr(struct map_range *mr, int nr_range,
|
||||
unsigned long start_pfn, unsigned long end_pfn,
|
||||
unsigned long page_size_mask)
|
||||
{
|
||||
if (start_pfn < end_pfn) {
|
||||
if (nr_range >= NR_RANGE_MR)
|
||||
|
@ -32,7 +32,23 @@ int is_io_mapping_possible(resource_size_t base, unsigned long size)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(is_io_mapping_possible);
|
||||
|
||||
/* Map 'pfn' using fixed map 'type' and protections 'prot'
|
||||
void *kmap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot)
|
||||
{
|
||||
enum fixed_addresses idx;
|
||||
unsigned long vaddr;
|
||||
|
||||
pagefault_disable();
|
||||
|
||||
idx = type + KM_TYPE_NR * smp_processor_id();
|
||||
vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
|
||||
set_pte(kmap_pte - idx, pfn_pte(pfn, prot));
|
||||
arch_flush_lazy_mmu_mode();
|
||||
|
||||
return (void *)vaddr;
|
||||
}
|
||||
|
||||
/*
|
||||
* Map 'pfn' using fixed map 'type' and protections 'prot'
|
||||
*/
|
||||
void *
|
||||
iomap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot)
|
||||
|
@ -22,13 +22,17 @@
|
||||
#include <asm/pgalloc.h>
|
||||
#include <asm/pat.h>
|
||||
|
||||
#ifdef CONFIG_X86_64
|
||||
|
||||
static inline int phys_addr_valid(unsigned long addr)
|
||||
static inline int phys_addr_valid(resource_size_t addr)
|
||||
{
|
||||
return addr < (1UL << boot_cpu_data.x86_phys_bits);
|
||||
#ifdef CONFIG_PHYS_ADDR_T_64BIT
|
||||
return !(addr >> boot_cpu_data.x86_phys_bits);
|
||||
#else
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_X86_64
|
||||
|
||||
unsigned long __phys_addr(unsigned long x)
|
||||
{
|
||||
if (x >= __START_KERNEL_map) {
|
||||
@ -65,11 +69,6 @@ EXPORT_SYMBOL(__virt_addr_valid);
|
||||
|
||||
#else
|
||||
|
||||
static inline int phys_addr_valid(unsigned long addr)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DEBUG_VIRTUAL
|
||||
unsigned long __phys_addr(unsigned long x)
|
||||
{
|
||||
@ -488,7 +487,12 @@ static int __init early_ioremap_debug_setup(char *str)
|
||||
early_param("early_ioremap_debug", early_ioremap_debug_setup);
|
||||
|
||||
static __initdata int after_paging_init;
|
||||
static pte_t bm_pte[PAGE_SIZE/sizeof(pte_t)] __page_aligned_bss;
|
||||
#define __FIXADDR_TOP (-PAGE_SIZE)
|
||||
static pte_t bm_pte[(__fix_to_virt(FIX_DBGP_BASE)
|
||||
^ __fix_to_virt(FIX_BTMAP_BEGIN)) >> PMD_SHIFT
|
||||
? PAGE_SIZE / sizeof(pte_t) : 0] __page_aligned_bss;
|
||||
#undef __FIXADDR_TOP
|
||||
static __initdata pte_t *bm_ptep;
|
||||
|
||||
static inline pmd_t * __init early_ioremap_pmd(unsigned long addr)
|
||||
{
|
||||
@ -503,6 +507,8 @@ static inline pmd_t * __init early_ioremap_pmd(unsigned long addr)
|
||||
|
||||
static inline pte_t * __init early_ioremap_pte(unsigned long addr)
|
||||
{
|
||||
if (!sizeof(bm_pte))
|
||||
return &bm_ptep[pte_index(addr)];
|
||||
return &bm_pte[pte_index(addr)];
|
||||
}
|
||||
|
||||
@ -520,8 +526,14 @@ void __init early_ioremap_init(void)
|
||||
slot_virt[i] = fix_to_virt(FIX_BTMAP_BEGIN - NR_FIX_BTMAPS*i);
|
||||
|
||||
pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN));
|
||||
memset(bm_pte, 0, sizeof(bm_pte));
|
||||
pmd_populate_kernel(&init_mm, pmd, bm_pte);
|
||||
if (sizeof(bm_pte)) {
|
||||
memset(bm_pte, 0, sizeof(bm_pte));
|
||||
pmd_populate_kernel(&init_mm, pmd, bm_pte);
|
||||
} else {
|
||||
bm_ptep = pte_offset_kernel(pmd, 0);
|
||||
if (early_ioremap_debug)
|
||||
printk(KERN_INFO "bm_ptep=%p\n", bm_ptep);
|
||||
}
|
||||
|
||||
/*
|
||||
* The boot-ioremap range spans multiple pmds, for which
|
||||
|
@ -677,10 +677,11 @@ static int reserve_pfn_range(u64 paddr, unsigned long size, pgprot_t *vma_prot,
|
||||
is_ram = pat_pagerange_is_ram(paddr, paddr + size);
|
||||
|
||||
/*
|
||||
* reserve_pfn_range() doesn't support RAM pages.
|
||||
* reserve_pfn_range() doesn't support RAM pages. Maintain the current
|
||||
* behavior with RAM pages by returning success.
|
||||
*/
|
||||
if (is_ram != 0)
|
||||
return -EINVAL;
|
||||
return 0;
|
||||
|
||||
ret = reserve_memtype(paddr, paddr + size, want_flags, &flags);
|
||||
if (ret)
|
||||
|
@ -90,7 +90,7 @@ static int __devinit can_skip_ioresource_align(const struct dmi_system_id *d)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct dmi_system_id can_skip_pciprobe_dmi_table[] __devinitdata = {
|
||||
static const struct dmi_system_id can_skip_pciprobe_dmi_table[] __devinitconst = {
|
||||
/*
|
||||
* Systems where PCI IO resource ISA alignment can be skipped
|
||||
* when the ISA enable bit in the bridge control is not set
|
||||
@ -183,7 +183,7 @@ static int __devinit assign_all_busses(const struct dmi_system_id *d)
|
||||
}
|
||||
#endif
|
||||
|
||||
static struct dmi_system_id __devinitdata pciprobe_dmi_table[] = {
|
||||
static const struct dmi_system_id __devinitconst pciprobe_dmi_table[] = {
|
||||
#ifdef __i386__
|
||||
/*
|
||||
* Laptops which need pci=assign-busses to see Cardbus cards
|
||||
|
@ -356,7 +356,7 @@ static void __devinit pci_fixup_video(struct pci_dev *pdev)
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video);
|
||||
|
||||
|
||||
static struct dmi_system_id __devinitdata msi_k8t_dmi_table[] = {
|
||||
static const struct dmi_system_id __devinitconst msi_k8t_dmi_table[] = {
|
||||
{
|
||||
.ident = "MSI-K8T-Neo2Fir",
|
||||
.matches = {
|
||||
@ -413,7 +413,7 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237,
|
||||
*/
|
||||
static u16 toshiba_line_size;
|
||||
|
||||
static struct dmi_system_id __devinitdata toshiba_ohci1394_dmi_table[] = {
|
||||
static const struct dmi_system_id __devinitconst toshiba_ohci1394_dmi_table[] = {
|
||||
{
|
||||
.ident = "Toshiba PS5 based laptop",
|
||||
.matches = {
|
||||
|
@ -543,8 +543,8 @@ config SENSORS_LM90
|
||||
help
|
||||
If you say yes here you get support for National Semiconductor LM90,
|
||||
LM86, LM89 and LM99, Analog Devices ADM1032 and ADT7461, and Maxim
|
||||
MAX6646, MAX6647, MAX6649, MAX6657, MAX6658, MAX6659, MAX6680 and
|
||||
MAX6681 sensor chips.
|
||||
MAX6646, MAX6647, MAX6648, MAX6649, MAX6657, MAX6658, MAX6659,
|
||||
MAX6680, MAX6681 and MAX6692 sensor chips.
|
||||
|
||||
This driver can also be built as a module. If so, the module
|
||||
will be called lm90.
|
||||
|
@ -760,8 +760,11 @@ static int abituguru3_read_increment_offset(struct abituguru3_data *data,
|
||||
|
||||
for (i = 0; i < offset_count; i++)
|
||||
if ((x = abituguru3_read(data, bank, offset + i, count,
|
||||
buf + i * count)) != count)
|
||||
return i * count + (i && (x < 0)) ? 0 : x;
|
||||
buf + i * count)) != count) {
|
||||
if (x < 0)
|
||||
return x;
|
||||
return i * count + x;
|
||||
}
|
||||
|
||||
return i * count;
|
||||
}
|
||||
|
@ -617,7 +617,7 @@ static void f75375_init(struct i2c_client *client, struct f75375_data *data,
|
||||
static int f75375_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct f75375_data *data = i2c_get_clientdata(client);
|
||||
struct f75375_data *data;
|
||||
struct f75375s_platform_data *f75375s_pdata = client->dev.platform_data;
|
||||
int err;
|
||||
|
||||
|
@ -213,7 +213,7 @@ static inline u16 FAN16_TO_REG(long rpm)
|
||||
|
||||
#define TEMP_TO_REG(val) (SENSORS_LIMIT(((val)<0?(((val)-500)/1000):\
|
||||
((val)+500)/1000),-128,127))
|
||||
#define TEMP_FROM_REG(val) (((val)>0x80?(val)-0x100:(val))*1000)
|
||||
#define TEMP_FROM_REG(val) ((val) * 1000)
|
||||
|
||||
#define PWM_TO_REG(val) ((val) >> 1)
|
||||
#define PWM_FROM_REG(val) (((val)&0x7f) << 1)
|
||||
@ -267,9 +267,9 @@ struct it87_data {
|
||||
u8 has_fan; /* Bitfield, fans enabled */
|
||||
u16 fan[5]; /* Register values, possibly combined */
|
||||
u16 fan_min[5]; /* Register values, possibly combined */
|
||||
u8 temp[3]; /* Register value */
|
||||
u8 temp_high[3]; /* Register value */
|
||||
u8 temp_low[3]; /* Register value */
|
||||
s8 temp[3]; /* Register value */
|
||||
s8 temp_high[3]; /* Register value */
|
||||
s8 temp_low[3]; /* Register value */
|
||||
u8 sensor; /* Register value */
|
||||
u8 fan_div[3]; /* Register encoding, shifted right */
|
||||
u8 vid; /* Register encoding, combined */
|
||||
|
@ -32,10 +32,10 @@
|
||||
* supported by this driver. These chips lack the remote temperature
|
||||
* offset feature.
|
||||
*
|
||||
* This driver also supports the MAX6646, MAX6647 and MAX6649 chips
|
||||
* made by Maxim. These are again similar to the LM86, but they use
|
||||
* unsigned temperature values and can report temperatures from 0 to
|
||||
* 145 degrees.
|
||||
* This driver also supports the MAX6646, MAX6647, MAX6648, MAX6649 and
|
||||
* MAX6692 chips made by Maxim. These are again similar to the LM86,
|
||||
* but they use unsigned temperature values and can report temperatures
|
||||
* from 0 to 145 degrees.
|
||||
*
|
||||
* This driver also supports the MAX6680 and MAX6681, two other sensor
|
||||
* chips made by Maxim. These are quite similar to the other Maxim
|
||||
|
@ -2490,12 +2490,14 @@ static int nes_disconnect(struct nes_qp *nesqp, int abrupt)
|
||||
int ret = 0;
|
||||
struct nes_vnic *nesvnic;
|
||||
struct nes_device *nesdev;
|
||||
struct nes_ib_device *nesibdev;
|
||||
|
||||
nesvnic = to_nesvnic(nesqp->ibqp.device);
|
||||
if (!nesvnic)
|
||||
return -EINVAL;
|
||||
|
||||
nesdev = nesvnic->nesdev;
|
||||
nesibdev = nesvnic->nesibdev;
|
||||
|
||||
nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n",
|
||||
atomic_read(&nesvnic->netdev->refcnt));
|
||||
@ -2507,6 +2509,8 @@ static int nes_disconnect(struct nes_qp *nesqp, int abrupt)
|
||||
} else {
|
||||
/* Need to free the Last Streaming Mode Message */
|
||||
if (nesqp->ietf_frame) {
|
||||
if (nesqp->lsmm_mr)
|
||||
nesibdev->ibdev.dereg_mr(nesqp->lsmm_mr);
|
||||
pci_free_consistent(nesdev->pcidev,
|
||||
nesqp->private_data_len+sizeof(struct ietf_mpa_frame),
|
||||
nesqp->ietf_frame, nesqp->ietf_frame_pbase);
|
||||
@ -2543,6 +2547,12 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
|
||||
u32 crc_value;
|
||||
int ret;
|
||||
int passive_state;
|
||||
struct nes_ib_device *nesibdev;
|
||||
struct ib_mr *ibmr = NULL;
|
||||
struct ib_phys_buf ibphysbuf;
|
||||
struct nes_pd *nespd;
|
||||
|
||||
|
||||
|
||||
ibqp = nes_get_qp(cm_id->device, conn_param->qpn);
|
||||
if (!ibqp)
|
||||
@ -2601,6 +2611,26 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
|
||||
if (cm_id->remote_addr.sin_addr.s_addr !=
|
||||
cm_id->local_addr.sin_addr.s_addr) {
|
||||
u64temp = (unsigned long)nesqp;
|
||||
nesibdev = nesvnic->nesibdev;
|
||||
nespd = nesqp->nespd;
|
||||
ibphysbuf.addr = nesqp->ietf_frame_pbase;
|
||||
ibphysbuf.size = conn_param->private_data_len +
|
||||
sizeof(struct ietf_mpa_frame);
|
||||
ibmr = nesibdev->ibdev.reg_phys_mr((struct ib_pd *)nespd,
|
||||
&ibphysbuf, 1,
|
||||
IB_ACCESS_LOCAL_WRITE,
|
||||
(u64 *)&nesqp->ietf_frame);
|
||||
if (!ibmr) {
|
||||
nes_debug(NES_DBG_CM, "Unable to register memory region"
|
||||
"for lSMM for cm_node = %p \n",
|
||||
cm_node);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
ibmr->pd = &nespd->ibpd;
|
||||
ibmr->device = nespd->ibpd.device;
|
||||
nesqp->lsmm_mr = ibmr;
|
||||
|
||||
u64temp |= NES_SW_CONTEXT_ALIGN>>1;
|
||||
set_wqe_64bit_value(wqe->wqe_words,
|
||||
NES_IWARP_SQ_WQE_COMP_CTX_LOW_IDX,
|
||||
@ -2611,14 +2641,13 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
|
||||
wqe->wqe_words[NES_IWARP_SQ_WQE_TOTAL_PAYLOAD_IDX] =
|
||||
cpu_to_le32(conn_param->private_data_len +
|
||||
sizeof(struct ietf_mpa_frame));
|
||||
wqe->wqe_words[NES_IWARP_SQ_WQE_FRAG0_LOW_IDX] =
|
||||
cpu_to_le32((u32)nesqp->ietf_frame_pbase);
|
||||
wqe->wqe_words[NES_IWARP_SQ_WQE_FRAG0_HIGH_IDX] =
|
||||
cpu_to_le32((u32)((u64)nesqp->ietf_frame_pbase >> 32));
|
||||
set_wqe_64bit_value(wqe->wqe_words,
|
||||
NES_IWARP_SQ_WQE_FRAG0_LOW_IDX,
|
||||
(u64)nesqp->ietf_frame);
|
||||
wqe->wqe_words[NES_IWARP_SQ_WQE_LENGTH0_IDX] =
|
||||
cpu_to_le32(conn_param->private_data_len +
|
||||
sizeof(struct ietf_mpa_frame));
|
||||
wqe->wqe_words[NES_IWARP_SQ_WQE_STAG0_IDX] = 0;
|
||||
wqe->wqe_words[NES_IWARP_SQ_WQE_STAG0_IDX] = ibmr->lkey;
|
||||
|
||||
nesqp->nesqp_context->ird_ord_sizes |=
|
||||
cpu_to_le32(NES_QPCONTEXT_ORDIRD_LSMM_PRESENT |
|
||||
|
@ -1360,8 +1360,10 @@ static struct ib_qp *nes_create_qp(struct ib_pd *ibpd,
|
||||
NES_QPCONTEXT_MISC_RQ_SIZE_SHIFT);
|
||||
nesqp->nesqp_context->misc |= cpu_to_le32((u32)nesqp->hwqp.sq_encoded_size <<
|
||||
NES_QPCONTEXT_MISC_SQ_SIZE_SHIFT);
|
||||
if (!udata) {
|
||||
nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_PRIV_EN);
|
||||
nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_FAST_REGISTER_EN);
|
||||
}
|
||||
nesqp->nesqp_context->cqs = cpu_to_le32(nesqp->nesscq->hw_cq.cq_number +
|
||||
((u32)nesqp->nesrcq->hw_cq.cq_number << 16));
|
||||
u64temp = (u64)nesqp->hwqp.sq_pbase;
|
||||
|
@ -134,6 +134,7 @@ struct nes_qp {
|
||||
struct ietf_mpa_frame *ietf_frame;
|
||||
dma_addr_t ietf_frame_pbase;
|
||||
wait_queue_head_t state_waitq;
|
||||
struct ib_mr *lsmm_mr;
|
||||
unsigned long socket;
|
||||
struct nes_hw_qp hwqp;
|
||||
struct work_struct work;
|
||||
|
@ -1383,6 +1383,11 @@ int wm8350_device_init(struct wm8350 *wm8350, int irq,
|
||||
wm8350->power.rev_g_coeff = 1;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
dev_info(wm8350->dev, "WM8351 Rev B\n");
|
||||
wm8350->power.rev_g_coeff = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
dev_err(wm8350->dev, "Unknown WM8351 CHIP_REV\n");
|
||||
ret = -ENODEV;
|
||||
|
@ -793,8 +793,7 @@ static void s3cmci_dma_setup(struct s3cmci_host *host,
|
||||
host->mem->start + host->sdidata);
|
||||
|
||||
if (!setup_ok) {
|
||||
s3c2410_dma_config(host->dma, 4,
|
||||
(S3C2410_DCON_HWTRIG | S3C2410_DCON_CH0_SDI));
|
||||
s3c2410_dma_config(host->dma, 4, 0);
|
||||
s3c2410_dma_set_buffdone_fn(host->dma,
|
||||
s3cmci_dma_done_callback);
|
||||
s3c2410_dma_setflags(host->dma, S3C2410_DMAF_AUTOSTART);
|
||||
|
@ -2649,8 +2649,6 @@ static int __devinit happy_meal_sbus_probe_one(struct of_device *op, int is_qfe)
|
||||
int err = -ENODEV;
|
||||
|
||||
sbus_dp = to_of_device(op->dev.parent)->node;
|
||||
if (is_qfe)
|
||||
sbus_dp = to_of_device(op->dev.parent->parent)->node;
|
||||
|
||||
/* We can match PCI devices too, do not accept those here. */
|
||||
if (strcmp(sbus_dp->name, "sbus"))
|
||||
|
@ -143,7 +143,7 @@ config HOTPLUG_PCI_SHPC
|
||||
|
||||
config HOTPLUG_PCI_RPA
|
||||
tristate "RPA PCI Hotplug driver"
|
||||
depends on PPC_PSERIES && PPC64 && !HOTPLUG_PCI_FAKE
|
||||
depends on PPC_PSERIES && EEH && !HOTPLUG_PCI_FAKE
|
||||
help
|
||||
Say Y here if you have a RPA system that supports PCI Hotplug.
|
||||
|
||||
|
@ -133,6 +133,9 @@ static void set_downstream_devices_error_reporting(struct pci_dev *dev,
|
||||
bool enable)
|
||||
{
|
||||
set_device_error_reporting(dev, &enable);
|
||||
|
||||
if (!dev->subordinate)
|
||||
return;
|
||||
pci_walk_bus(dev->subordinate, set_device_error_reporting, &enable);
|
||||
}
|
||||
|
||||
|
@ -103,6 +103,7 @@ static int __devinit pcie_portdrv_probe (struct pci_dev *dev,
|
||||
static void pcie_portdrv_remove (struct pci_dev *dev)
|
||||
{
|
||||
pcie_port_device_remove(dev);
|
||||
pci_disable_device(dev);
|
||||
kfree(pci_get_drvdata(dev));
|
||||
}
|
||||
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <linux/acpi.h>
|
||||
#include <linux/kallsyms.h>
|
||||
#include <linux/dmi.h>
|
||||
#include <linux/pci-aspm.h>
|
||||
#include "pci.h"
|
||||
|
||||
int isa_dma_bridge_buggy;
|
||||
@ -1749,6 +1750,30 @@ static void __devinit quirk_e100_interrupt(struct pci_dev *dev)
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, quirk_e100_interrupt);
|
||||
|
||||
/*
|
||||
* The 82575 and 82598 may experience data corruption issues when transitioning
|
||||
* out of L0S. To prevent this we need to disable L0S on the pci-e link
|
||||
*/
|
||||
static void __devinit quirk_disable_aspm_l0s(struct pci_dev *dev)
|
||||
{
|
||||
dev_info(&dev->dev, "Disabling L0s\n");
|
||||
pci_disable_link_state(dev, PCIE_LINK_STATE_L0S);
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10a7, quirk_disable_aspm_l0s);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10a9, quirk_disable_aspm_l0s);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10b6, quirk_disable_aspm_l0s);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10c6, quirk_disable_aspm_l0s);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10c7, quirk_disable_aspm_l0s);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10c8, quirk_disable_aspm_l0s);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10d6, quirk_disable_aspm_l0s);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10db, quirk_disable_aspm_l0s);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10dd, quirk_disable_aspm_l0s);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10e1, quirk_disable_aspm_l0s);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10ec, quirk_disable_aspm_l0s);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10f1, quirk_disable_aspm_l0s);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10f4, quirk_disable_aspm_l0s);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1508, quirk_disable_aspm_l0s);
|
||||
|
||||
static void __devinit fixup_rev1_53c810(struct pci_dev* dev)
|
||||
{
|
||||
/* rev 1 ncr53c810 chips don't set the class at all which means
|
||||
@ -2097,7 +2122,7 @@ static void __devinit ht_disable_msi_mapping(struct pci_dev *dev)
|
||||
|
||||
if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS,
|
||||
&flags) == 0) {
|
||||
dev_info(&dev->dev, "Enabling HT MSI Mapping\n");
|
||||
dev_info(&dev->dev, "Disabling HT MSI Mapping\n");
|
||||
|
||||
pci_write_config_byte(dev, pos + HT_MSI_FLAGS,
|
||||
flags & ~HT_MSI_FLAGS_ENABLE);
|
||||
@ -2141,6 +2166,10 @@ static void __devinit nv_msi_ht_cap_quirk(struct pci_dev *dev)
|
||||
int pos;
|
||||
int found;
|
||||
|
||||
/* Enabling HT MSI mapping on this device breaks MCP51 */
|
||||
if (dev->device == 0x270)
|
||||
return;
|
||||
|
||||
/* check if there is HT MSI cap or enabled on this device */
|
||||
found = ht_check_msi_mapping(dev);
|
||||
|
||||
|
@ -1297,7 +1297,7 @@ static int __init acer_wmi_init(void)
|
||||
|
||||
set_quirks();
|
||||
|
||||
if (!acpi_video_backlight_support() && has_cap(ACER_CAP_BRIGHTNESS)) {
|
||||
if (acpi_video_backlight_support() && has_cap(ACER_CAP_BRIGHTNESS)) {
|
||||
interface->capability &= ~ACER_CAP_BRIGHTNESS;
|
||||
printk(ACER_INFO "Brightness must be controlled by "
|
||||
"generic video driver\n");
|
||||
|
@ -180,10 +180,13 @@ static int ds2760_battery_read_status(struct ds2760_device_info *di)
|
||||
di->empty_uAh = battery_interpolate(scale, di->temp_C / 10);
|
||||
di->empty_uAh *= 1000; /* convert to µAh */
|
||||
|
||||
/* From Maxim Application Note 131: remaining capacity =
|
||||
* ((ICA - Empty Value) / (Full Value - Empty Value)) x 100% */
|
||||
di->rem_capacity = ((di->accum_current_uAh - di->empty_uAh) * 100L) /
|
||||
(di->full_active_uAh - di->empty_uAh);
|
||||
if (di->full_active_uAh == di->empty_uAh)
|
||||
di->rem_capacity = 0;
|
||||
else
|
||||
/* From Maxim Application Note 131: remaining capacity =
|
||||
* ((ICA - Empty Value) / (Full Value - Empty Value)) x 100% */
|
||||
di->rem_capacity = ((di->accum_current_uAh - di->empty_uAh) * 100L) /
|
||||
(di->full_active_uAh - di->empty_uAh);
|
||||
|
||||
if (di->rem_capacity < 0)
|
||||
di->rem_capacity = 0;
|
||||
|
@ -129,7 +129,7 @@ static int wait_for_pin(struct bbc_i2c_bus *bp, u8 *status)
|
||||
bp->waiting = 1;
|
||||
add_wait_queue(&bp->wq, &wait);
|
||||
while (limit-- > 0) {
|
||||
unsigned long val;
|
||||
long val;
|
||||
|
||||
val = wait_event_interruptible_timeout(
|
||||
bp->wq,
|
||||
|
@ -38,9 +38,6 @@
|
||||
#include <linux/string.h>
|
||||
#include <linux/genhd.h>
|
||||
#include <linux/blkdev.h>
|
||||
|
||||
#define MAJOR_NR JSFD_MAJOR
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/io.h>
|
||||
|
@ -39,7 +39,7 @@ static u8 w1_gpio_read_bit(void *data)
|
||||
{
|
||||
struct w1_gpio_platform_data *pdata = data;
|
||||
|
||||
return gpio_get_value(pdata->pin);
|
||||
return gpio_get_value(pdata->pin) ? 1 : 0;
|
||||
}
|
||||
|
||||
static int __init w1_gpio_probe(struct platform_device *pdev)
|
||||
|
@ -274,6 +274,7 @@ __sync_single_inode(struct inode *inode, struct writeback_control *wbc)
|
||||
int ret;
|
||||
|
||||
BUG_ON(inode->i_state & I_SYNC);
|
||||
WARN_ON(inode->i_state & I_NEW);
|
||||
|
||||
/* Set I_SYNC, reset I_DIRTY */
|
||||
dirty = inode->i_state & I_DIRTY;
|
||||
@ -298,6 +299,7 @@ __sync_single_inode(struct inode *inode, struct writeback_control *wbc)
|
||||
}
|
||||
|
||||
spin_lock(&inode_lock);
|
||||
WARN_ON(inode->i_state & I_NEW);
|
||||
inode->i_state &= ~I_SYNC;
|
||||
if (!(inode->i_state & I_FREEING)) {
|
||||
if (!(inode->i_state & I_DIRTY) &&
|
||||
@ -470,6 +472,11 @@ void generic_sync_sb_inodes(struct super_block *sb,
|
||||
break;
|
||||
}
|
||||
|
||||
if (inode->i_state & I_NEW) {
|
||||
requeue_io(inode);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (wbc->nonblocking && bdi_write_congested(bdi)) {
|
||||
wbc->encountered_congestion = 1;
|
||||
if (!sb_is_blkdev_sb(sb))
|
||||
@ -531,7 +538,7 @@ void generic_sync_sb_inodes(struct super_block *sb,
|
||||
list_for_each_entry(inode, &sb->s_inodes, i_sb_list) {
|
||||
struct address_space *mapping;
|
||||
|
||||
if (inode->i_state & (I_FREEING|I_WILL_FREE))
|
||||
if (inode->i_state & (I_FREEING|I_WILL_FREE|I_NEW))
|
||||
continue;
|
||||
mapping = inode->i_mapping;
|
||||
if (mapping->nrpages == 0)
|
||||
|
@ -359,6 +359,7 @@ static int invalidate_list(struct list_head *head, struct list_head *dispose)
|
||||
invalidate_inode_buffers(inode);
|
||||
if (!atomic_read(&inode->i_count)) {
|
||||
list_move(&inode->i_list, dispose);
|
||||
WARN_ON(inode->i_state & I_NEW);
|
||||
inode->i_state |= I_FREEING;
|
||||
count++;
|
||||
continue;
|
||||
@ -460,6 +461,7 @@ static void prune_icache(int nr_to_scan)
|
||||
continue;
|
||||
}
|
||||
list_move(&inode->i_list, &freeable);
|
||||
WARN_ON(inode->i_state & I_NEW);
|
||||
inode->i_state |= I_FREEING;
|
||||
nr_pruned++;
|
||||
}
|
||||
@ -656,6 +658,7 @@ void unlock_new_inode(struct inode *inode)
|
||||
* just created it (so there can be no old holders
|
||||
* that haven't tested I_LOCK).
|
||||
*/
|
||||
WARN_ON((inode->i_state & (I_LOCK|I_NEW)) != (I_LOCK|I_NEW));
|
||||
inode->i_state &= ~(I_LOCK|I_NEW);
|
||||
wake_up_inode(inode);
|
||||
}
|
||||
@ -1145,6 +1148,7 @@ void generic_delete_inode(struct inode *inode)
|
||||
|
||||
list_del_init(&inode->i_list);
|
||||
list_del_init(&inode->i_sb_list);
|
||||
WARN_ON(inode->i_state & I_NEW);
|
||||
inode->i_state |= I_FREEING;
|
||||
inodes_stat.nr_inodes--;
|
||||
spin_unlock(&inode_lock);
|
||||
@ -1186,16 +1190,19 @@ static void generic_forget_inode(struct inode *inode)
|
||||
spin_unlock(&inode_lock);
|
||||
return;
|
||||
}
|
||||
WARN_ON(inode->i_state & I_NEW);
|
||||
inode->i_state |= I_WILL_FREE;
|
||||
spin_unlock(&inode_lock);
|
||||
write_inode_now(inode, 1);
|
||||
spin_lock(&inode_lock);
|
||||
WARN_ON(inode->i_state & I_NEW);
|
||||
inode->i_state &= ~I_WILL_FREE;
|
||||
inodes_stat.nr_unused--;
|
||||
hlist_del_init(&inode->i_hash);
|
||||
}
|
||||
list_del_init(&inode->i_list);
|
||||
list_del_init(&inode->i_sb_list);
|
||||
WARN_ON(inode->i_state & I_NEW);
|
||||
inode->i_state |= I_FREEING;
|
||||
inodes_stat.nr_inodes--;
|
||||
spin_unlock(&inode_lock);
|
||||
|
@ -699,12 +699,12 @@ pipe_rdwr_fasync(int fd, struct file *filp, int on)
|
||||
int retval;
|
||||
|
||||
mutex_lock(&inode->i_mutex);
|
||||
|
||||
retval = fasync_helper(fd, filp, on, &pipe->fasync_readers);
|
||||
|
||||
if (retval >= 0)
|
||||
if (retval >= 0) {
|
||||
retval = fasync_helper(fd, filp, on, &pipe->fasync_writers);
|
||||
|
||||
if (retval < 0) /* this can happen only if on == T */
|
||||
fasync_helper(-1, filp, 0, &pipe->fasync_readers);
|
||||
}
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
|
||||
if (retval < 0)
|
||||
|
@ -184,15 +184,7 @@ int squashfs_read_data(struct super_block *sb, void **buffer, u64 index,
|
||||
offset = 0;
|
||||
}
|
||||
|
||||
if (msblk->stream.avail_out == 0) {
|
||||
if (page == pages) {
|
||||
ERROR("zlib_inflate tried to "
|
||||
"decompress too much data, "
|
||||
"expected %d bytes. Zlib "
|
||||
"data probably corrupt\n",
|
||||
srclength);
|
||||
goto release_mutex;
|
||||
}
|
||||
if (msblk->stream.avail_out == 0 && page < pages) {
|
||||
msblk->stream.next_out = buffer[page++];
|
||||
msblk->stream.avail_out = PAGE_CACHE_SIZE;
|
||||
}
|
||||
@ -209,25 +201,20 @@ int squashfs_read_data(struct super_block *sb, void **buffer, u64 index,
|
||||
zlib_init = 1;
|
||||
}
|
||||
|
||||
zlib_err = zlib_inflate(&msblk->stream, Z_NO_FLUSH);
|
||||
zlib_err = zlib_inflate(&msblk->stream, Z_SYNC_FLUSH);
|
||||
|
||||
if (msblk->stream.avail_in == 0 && k < b)
|
||||
put_bh(bh[k++]);
|
||||
} while (zlib_err == Z_OK);
|
||||
|
||||
if (zlib_err != Z_STREAM_END) {
|
||||
ERROR("zlib_inflate returned unexpected result"
|
||||
" 0x%x, srclength %d, avail_in %d,"
|
||||
" avail_out %d\n", zlib_err, srclength,
|
||||
msblk->stream.avail_in,
|
||||
msblk->stream.avail_out);
|
||||
ERROR("zlib_inflate error, data probably corrupt\n");
|
||||
goto release_mutex;
|
||||
}
|
||||
|
||||
zlib_err = zlib_inflateEnd(&msblk->stream);
|
||||
if (zlib_err != Z_OK) {
|
||||
ERROR("zlib_inflateEnd returned unexpected result 0x%x,"
|
||||
" srclength %d\n", zlib_err, srclength);
|
||||
ERROR("zlib_inflate error, data probably corrupt\n");
|
||||
goto release_mutex;
|
||||
}
|
||||
length = msblk->stream.total_out;
|
||||
|
@ -371,8 +371,10 @@ retry:
|
||||
continue;
|
||||
if (!grab_super(old))
|
||||
goto retry;
|
||||
if (s)
|
||||
if (s) {
|
||||
up_write(&s->s_umount);
|
||||
destroy_super(s);
|
||||
}
|
||||
return old;
|
||||
}
|
||||
}
|
||||
@ -387,6 +389,7 @@ retry:
|
||||
err = set(s, data);
|
||||
if (err) {
|
||||
spin_unlock(&sb_lock);
|
||||
up_write(&s->s_umount);
|
||||
destroy_super(s);
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
@ -34,6 +34,12 @@
|
||||
#include <linux/backing-dev.h>
|
||||
#include <linux/freezer.h>
|
||||
|
||||
#include "xfs_sb.h"
|
||||
#include "xfs_inum.h"
|
||||
#include "xfs_ag.h"
|
||||
#include "xfs_dmapi.h"
|
||||
#include "xfs_mount.h"
|
||||
|
||||
static kmem_zone_t *xfs_buf_zone;
|
||||
STATIC int xfsbufd(void *);
|
||||
STATIC int xfsbufd_wakeup(int, gfp_t);
|
||||
@ -1435,10 +1441,12 @@ xfs_unregister_buftarg(
|
||||
|
||||
void
|
||||
xfs_free_buftarg(
|
||||
xfs_buftarg_t *btp)
|
||||
struct xfs_mount *mp,
|
||||
struct xfs_buftarg *btp)
|
||||
{
|
||||
xfs_flush_buftarg(btp, 1);
|
||||
xfs_blkdev_issue_flush(btp);
|
||||
if (mp->m_flags & XFS_MOUNT_BARRIER)
|
||||
xfs_blkdev_issue_flush(btp);
|
||||
xfs_free_bufhash(btp);
|
||||
iput(btp->bt_mapping->host);
|
||||
|
||||
|
@ -413,7 +413,7 @@ static inline int XFS_bwrite(xfs_buf_t *bp)
|
||||
* Handling of buftargs.
|
||||
*/
|
||||
extern xfs_buftarg_t *xfs_alloc_buftarg(struct block_device *, int);
|
||||
extern void xfs_free_buftarg(xfs_buftarg_t *);
|
||||
extern void xfs_free_buftarg(struct xfs_mount *, struct xfs_buftarg *);
|
||||
extern void xfs_wait_buftarg(xfs_buftarg_t *);
|
||||
extern int xfs_setsize_buftarg(xfs_buftarg_t *, unsigned int, unsigned int);
|
||||
extern int xfs_flush_buftarg(xfs_buftarg_t *, int);
|
||||
|
@ -734,15 +734,15 @@ xfs_close_devices(
|
||||
{
|
||||
if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp) {
|
||||
struct block_device *logdev = mp->m_logdev_targp->bt_bdev;
|
||||
xfs_free_buftarg(mp->m_logdev_targp);
|
||||
xfs_free_buftarg(mp, mp->m_logdev_targp);
|
||||
xfs_blkdev_put(logdev);
|
||||
}
|
||||
if (mp->m_rtdev_targp) {
|
||||
struct block_device *rtdev = mp->m_rtdev_targp->bt_bdev;
|
||||
xfs_free_buftarg(mp->m_rtdev_targp);
|
||||
xfs_free_buftarg(mp, mp->m_rtdev_targp);
|
||||
xfs_blkdev_put(rtdev);
|
||||
}
|
||||
xfs_free_buftarg(mp->m_ddev_targp);
|
||||
xfs_free_buftarg(mp, mp->m_ddev_targp);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -811,9 +811,9 @@ xfs_open_devices(
|
||||
|
||||
out_free_rtdev_targ:
|
||||
if (mp->m_rtdev_targp)
|
||||
xfs_free_buftarg(mp->m_rtdev_targp);
|
||||
xfs_free_buftarg(mp, mp->m_rtdev_targp);
|
||||
out_free_ddev_targ:
|
||||
xfs_free_buftarg(mp->m_ddev_targp);
|
||||
xfs_free_buftarg(mp, mp->m_ddev_targp);
|
||||
out_close_rtdev:
|
||||
if (rtdev)
|
||||
xfs_blkdev_put(rtdev);
|
||||
|
@ -246,9 +246,6 @@ xfs_iget_cache_miss(
|
||||
goto out_destroy;
|
||||
}
|
||||
|
||||
if (lock_flags)
|
||||
xfs_ilock(ip, lock_flags);
|
||||
|
||||
/*
|
||||
* Preload the radix tree so we can insert safely under the
|
||||
* write spinlock. Note that we cannot sleep inside the preload
|
||||
@ -256,7 +253,16 @@ xfs_iget_cache_miss(
|
||||
*/
|
||||
if (radix_tree_preload(GFP_KERNEL)) {
|
||||
error = EAGAIN;
|
||||
goto out_unlock;
|
||||
goto out_destroy;
|
||||
}
|
||||
|
||||
/*
|
||||
* Because the inode hasn't been added to the radix-tree yet it can't
|
||||
* be found by another thread, so we can do the non-sleeping lock here.
|
||||
*/
|
||||
if (lock_flags) {
|
||||
if (!xfs_ilock_nowait(ip, lock_flags))
|
||||
BUG();
|
||||
}
|
||||
|
||||
mask = ~(((XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog)) - 1);
|
||||
@ -284,7 +290,6 @@ xfs_iget_cache_miss(
|
||||
out_preload_end:
|
||||
write_unlock(&pag->pag_ici_lock);
|
||||
radix_tree_preload_end();
|
||||
out_unlock:
|
||||
if (lock_flags)
|
||||
xfs_iunlock(ip, lock_flags);
|
||||
out_destroy:
|
||||
|
@ -1455,10 +1455,19 @@ xlog_recover_add_to_trans(
|
||||
item = item->ri_prev;
|
||||
|
||||
if (item->ri_total == 0) { /* first region to be added */
|
||||
item->ri_total = in_f->ilf_size;
|
||||
ASSERT(item->ri_total <= XLOG_MAX_REGIONS_IN_ITEM);
|
||||
item->ri_buf = kmem_zalloc((item->ri_total *
|
||||
sizeof(xfs_log_iovec_t)), KM_SLEEP);
|
||||
if (in_f->ilf_size == 0 ||
|
||||
in_f->ilf_size > XLOG_MAX_REGIONS_IN_ITEM) {
|
||||
xlog_warn(
|
||||
"XFS: bad number of regions (%d) in inode log format",
|
||||
in_f->ilf_size);
|
||||
ASSERT(0);
|
||||
return XFS_ERROR(EIO);
|
||||
}
|
||||
|
||||
item->ri_total = in_f->ilf_size;
|
||||
item->ri_buf =
|
||||
kmem_zalloc(item->ri_total * sizeof(xfs_log_iovec_t),
|
||||
KM_SLEEP);
|
||||
}
|
||||
ASSERT(item->ri_total > item->ri_cnt);
|
||||
/* Description region is ri_buf[0] */
|
||||
|
@ -104,6 +104,7 @@ extern unsigned int kobjsize(const void *objp);
|
||||
#define VM_CAN_NONLINEAR 0x08000000 /* Has ->fault & does nonlinear pages */
|
||||
#define VM_MIXEDMAP 0x10000000 /* Can contain "struct page" and pure PFN pages */
|
||||
#define VM_SAO 0x20000000 /* Strong Access Ordering (powerpc) */
|
||||
#define VM_PFN_AT_MMAP 0x40000000 /* PFNMAP vma that is fully mapped at mmap time */
|
||||
|
||||
#ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */
|
||||
#define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS
|
||||
@ -145,7 +146,7 @@ extern pgprot_t protection_map[16];
|
||||
*/
|
||||
static inline int is_linear_pfn_mapping(struct vm_area_struct *vma)
|
||||
{
|
||||
return ((vma->vm_flags & VM_PFNMAP) && vma->vm_pgoff);
|
||||
return (vma->vm_flags & VM_PFN_AT_MMAP);
|
||||
}
|
||||
|
||||
static inline int is_pfn_mapping(struct vm_area_struct *vma)
|
||||
|
@ -276,4 +276,7 @@ struct mm_struct {
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Future-safe accessor for struct mm_struct's cpu_vm_mask. */
|
||||
#define mm_cpumask(mm) (&(mm)->cpu_vm_mask)
|
||||
|
||||
#endif /* _LINUX_MM_TYPES_H */
|
||||
|
@ -1418,6 +1418,9 @@ struct task_struct {
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Future-safe accessor for struct task_struct's cpus_allowed. */
|
||||
#define tsk_cpumask(tsk) (&(tsk)->cpus_allowed)
|
||||
|
||||
/*
|
||||
* Priority of a process goes from 0..MAX_PRIO-1, valid RT
|
||||
* priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH
|
||||
|
16
lib/bitmap.c
16
lib/bitmap.c
@ -948,15 +948,15 @@ done:
|
||||
*/
|
||||
int bitmap_find_free_region(unsigned long *bitmap, int bits, int order)
|
||||
{
|
||||
int pos; /* scans bitmap by regions of size order */
|
||||
int pos, end; /* scans bitmap by regions of size order */
|
||||
|
||||
for (pos = 0; pos < bits; pos += (1 << order))
|
||||
if (__reg_op(bitmap, pos, order, REG_OP_ISFREE))
|
||||
break;
|
||||
if (pos == bits)
|
||||
return -ENOMEM;
|
||||
__reg_op(bitmap, pos, order, REG_OP_ALLOC);
|
||||
return pos;
|
||||
for (pos = 0 ; (end = pos + (1 << order)) <= bits; pos = end) {
|
||||
if (!__reg_op(bitmap, pos, order, REG_OP_ISFREE))
|
||||
continue;
|
||||
__reg_op(bitmap, pos, order, REG_OP_ALLOC);
|
||||
return pos;
|
||||
}
|
||||
return -ENOMEM;
|
||||
}
|
||||
EXPORT_SYMBOL(bitmap_find_free_region);
|
||||
|
||||
|
@ -1665,9 +1665,10 @@ int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,
|
||||
* behaviour that some programs depend on. We mark the "original"
|
||||
* un-COW'ed pages by matching them up with "vma->vm_pgoff".
|
||||
*/
|
||||
if (addr == vma->vm_start && end == vma->vm_end)
|
||||
if (addr == vma->vm_start && end == vma->vm_end) {
|
||||
vma->vm_pgoff = pfn;
|
||||
else if (is_cow_mapping(vma->vm_flags))
|
||||
vma->vm_flags |= VM_PFN_AT_MMAP;
|
||||
} else if (is_cow_mapping(vma->vm_flags))
|
||||
return -EINVAL;
|
||||
|
||||
vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP;
|
||||
@ -1679,6 +1680,7 @@ int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,
|
||||
* needed from higher level routine calling unmap_vmas
|
||||
*/
|
||||
vma->vm_flags &= ~(VM_IO | VM_RESERVED | VM_PFNMAP);
|
||||
vma->vm_flags &= ~VM_PFN_AT_MMAP;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -1469,7 +1469,7 @@ static void shrink_zone(int priority, struct zone *zone,
|
||||
int file = is_file_lru(l);
|
||||
int scan;
|
||||
|
||||
scan = zone_page_state(zone, NR_LRU_BASE + l);
|
||||
scan = zone_nr_pages(zone, sc, l);
|
||||
if (priority) {
|
||||
scan >>= priority;
|
||||
scan = (scan * percent[file]) / 100;
|
||||
|
@ -35,9 +35,10 @@ $(objtree)/kernel.spec: $(MKSPEC) $(srctree)/Makefile
|
||||
rpm-pkg rpm: $(objtree)/kernel.spec FORCE
|
||||
$(MAKE) clean
|
||||
$(PREV) ln -sf $(srctree) $(KERNELPATH)
|
||||
$(CONFIG_SHELL) $(srctree)/scripts/setlocalversion > $(objtree)/.scmversion
|
||||
$(PREV) tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(KERNELPATH)/.
|
||||
$(PREV) rm $(KERNELPATH)
|
||||
|
||||
rm -f $(objtree)/.scmversion
|
||||
set -e; \
|
||||
$(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
|
||||
set -e; \
|
||||
|
@ -96,7 +96,7 @@ echo "%endif"
|
||||
|
||||
echo ""
|
||||
echo "%clean"
|
||||
echo '#echo -rf $RPM_BUILD_ROOT'
|
||||
echo 'rm -rf $RPM_BUILD_ROOT'
|
||||
echo ""
|
||||
echo "%files"
|
||||
echo '%defattr (-, root, root)'
|
||||
|
@ -206,7 +206,7 @@ static void done(void);
|
||||
static void error(const char *);
|
||||
static int findsym(const char *);
|
||||
static void flushline(bool);
|
||||
static Linetype getline(void);
|
||||
static Linetype get_line(void);
|
||||
static Linetype ifeval(const char **);
|
||||
static void ignoreoff(void);
|
||||
static void ignoreon(void);
|
||||
@ -512,7 +512,7 @@ process(void)
|
||||
|
||||
for (;;) {
|
||||
linenum++;
|
||||
lineval = getline();
|
||||
lineval = get_line();
|
||||
trans_table[ifstate[depth]][lineval]();
|
||||
debug("process %s -> %s depth %d",
|
||||
linetype_name[lineval],
|
||||
@ -526,7 +526,7 @@ process(void)
|
||||
* help from skipcomment().
|
||||
*/
|
||||
static Linetype
|
||||
getline(void)
|
||||
get_line(void)
|
||||
{
|
||||
const char *cp;
|
||||
int cursym;
|
||||
|
Loading…
Reference in New Issue
Block a user