Merge branches 'tracing/ftrace', 'tracing/hw-branch-tracing' and 'tracing/ring-buffer'; commit 'v2.6.28' into tracing/core
This commit is contained in:
Коммит
5250d329e3
|
@ -221,14 +221,17 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||
Bits in debug_level correspond to a level in
|
||||
ACPI_DEBUG_PRINT statements, e.g.,
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO, ...
|
||||
See Documentation/acpi/debug.txt for more information
|
||||
about debug layers and levels.
|
||||
The debug_level mask defaults to "info". See
|
||||
Documentation/acpi/debug.txt for more information about
|
||||
debug layers and levels.
|
||||
|
||||
Enable processor driver info messages:
|
||||
acpi.debug_layer=0x20000000
|
||||
Enable PCI/PCI interrupt routing info messages:
|
||||
acpi.debug_layer=0x400000
|
||||
Enable AML "Debug" output, i.e., stores to the Debug
|
||||
object while interpreting AML:
|
||||
acpi.debug_layer=0xffffffff acpi.debug_level=0x2
|
||||
Enable PCI/PCI interrupt routing info messages:
|
||||
acpi.debug_layer=0x400000 acpi.debug_level=0x4
|
||||
Enable all messages related to ACPI hardware:
|
||||
acpi.debug_layer=0x2 acpi.debug_level=0xffffffff
|
||||
|
||||
|
|
|
@ -1063,6 +1063,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
|||
|
||||
STAC9227/9228/9229/927x
|
||||
ref Reference board
|
||||
ref-no-jd Reference board without HP/Mic jack detection
|
||||
3stack D965 3stack
|
||||
5stack D965 5stack + SPDIF
|
||||
dell-3stack Dell Dimension E520
|
||||
|
@ -1076,6 +1077,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
|||
|
||||
STAC92HD73*
|
||||
ref Reference board
|
||||
no-jd BIOS setup but without jack-detection
|
||||
dell-m6-amic Dell desktops/laptops with analog mics
|
||||
dell-m6-dmic Dell desktops/laptops with digital mics
|
||||
dell-m6 Dell desktops/laptops with both type of mics
|
||||
|
|
|
@ -2191,9 +2191,9 @@ S: Supported
|
|||
|
||||
INOTIFY
|
||||
P: John McCutchan
|
||||
M: ttb@tentacle.dhs.org
|
||||
M: john@johnmccutchan.com
|
||||
P: Robert Love
|
||||
M: rml@novell.com
|
||||
M: rlove@rlove.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
|
@ -4529,7 +4529,7 @@ S: Maintained
|
|||
USB VIDEO CLASS
|
||||
P: Laurent Pinchart
|
||||
M: laurent.pinchart@skynet.be
|
||||
L: linux-uvc-devel@lists.berlios.de
|
||||
L: linux-uvc-devel@lists.berlios.de (subscribers-only)
|
||||
L: video4linux-list@redhat.com
|
||||
W: http://linux-uvc.berlios.de
|
||||
S: Maintained
|
||||
|
|
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
|||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 28
|
||||
EXTRAVERSION = -rc8
|
||||
EXTRAVERSION =
|
||||
NAME = Erotic Pickled Herring
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
|
||||
#include <asm/arch/smc.h>
|
||||
#include <mach/smc.h>
|
||||
|
||||
static struct smc_timing flash_timing __initdata = {
|
||||
.ncs_read_setup = 0,
|
||||
|
|
|
@ -25,10 +25,10 @@
|
|||
|
||||
#include <asm/setup.h>
|
||||
|
||||
#include <asm/arch/at32ap700x.h>
|
||||
#include <asm/arch/init.h>
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/portmux.h>
|
||||
#include <mach/at32ap700x.h>
|
||||
#include <mach/init.h>
|
||||
#include <mach/board.h>
|
||||
#include <mach/portmux.h>
|
||||
|
||||
/* Oscillator frequencies. These are board-specific */
|
||||
unsigned long at32_board_osc_rates[3] = {
|
||||
|
|
|
@ -10,7 +10,7 @@ MKIMAGE := $(srctree)/scripts/mkuboot.sh
|
|||
|
||||
extra-y := vmlinux.bin vmlinux.gz
|
||||
|
||||
OBJCOPYFLAGS_vmlinux.bin := -O binary
|
||||
OBJCOPYFLAGS_vmlinux.bin := -O binary -R .note.gnu.build-id
|
||||
$(obj)/vmlinux.bin: vmlinux FORCE
|
||||
$(call if_changed,objcopy)
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.27-rc1
|
||||
# Tue Aug 5 15:40:26 2008
|
||||
# Linux kernel version: 2.6.28-rc8
|
||||
# Thu Dec 18 11:22:23 2008
|
||||
#
|
||||
CONFIG_AVR32=y
|
||||
CONFIG_GENERIC_GPIO=y
|
||||
|
@ -67,6 +67,7 @@ CONFIG_SIGNALFD=y
|
|||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_AIO=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLUB_DEBUG=y
|
||||
# CONFIG_SLAB is not set
|
||||
|
@ -77,15 +78,8 @@ CONFIG_PROFILING=y
|
|||
CONFIG_OPROFILE=m
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
CONFIG_KPROBES=y
|
||||
# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
|
||||
# CONFIG_HAVE_IOREMAP_PROT is not set
|
||||
CONFIG_HAVE_KPROBES=y
|
||||
# CONFIG_HAVE_KRETPROBES is not set
|
||||
# CONFIG_HAVE_ARCH_TRACEHOOK is not set
|
||||
# CONFIG_HAVE_DMA_ATTRS is not set
|
||||
# CONFIG_USE_GENERIC_SMP_HELPERS is not set
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
|
@ -118,6 +112,7 @@ CONFIG_DEFAULT_CFQ=y
|
|||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
CONFIG_FREEZER=y
|
||||
|
||||
#
|
||||
# System Type and features
|
||||
|
@ -134,6 +129,8 @@ CONFIG_CPU_AT32AP700X=y
|
|||
CONFIG_CPU_AT32AP7000=y
|
||||
CONFIG_BOARD_ATSTK1000=y
|
||||
# CONFIG_BOARD_ATNGW100 is not set
|
||||
# CONFIG_BOARD_FAVR_32 is not set
|
||||
# CONFIG_BOARD_MIMC200 is not set
|
||||
# CONFIG_BOARD_ATSTK1002 is not set
|
||||
# CONFIG_BOARD_ATSTK1003 is not set
|
||||
# CONFIG_BOARD_ATSTK1004 is not set
|
||||
|
@ -171,14 +168,14 @@ CONFIG_FLATMEM_MANUAL=y
|
|||
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
|
||||
CONFIG_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_NR_QUICK=2
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
CONFIG_UNEVICTABLE_LRU=y
|
||||
# CONFIG_OWNERSHIP_TRACE is not set
|
||||
CONFIG_NMI_DEBUGGING=y
|
||||
# CONFIG_HZ_100 is not set
|
||||
|
@ -186,7 +183,7 @@ CONFIG_HZ_250=y
|
|||
# CONFIG_HZ_300 is not set
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=250
|
||||
# CONFIG_SCHED_HRTICK is not set
|
||||
CONFIG_SCHED_HRTICK=y
|
||||
CONFIG_CMDLINE=""
|
||||
|
||||
#
|
||||
|
@ -228,6 +225,8 @@ CONFIG_CPU_FREQ_AT32AP=y
|
|||
# Executable file formats
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
# CONFIG_HAVE_AOUT is not set
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_NET=y
|
||||
|
||||
|
@ -299,6 +298,7 @@ CONFIG_IPV6_TUNNEL=m
|
|||
# CONFIG_ATM is not set
|
||||
CONFIG_STP=m
|
||||
CONFIG_BRIDGE=m
|
||||
# CONFIG_NET_DSA is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
CONFIG_LLC=m
|
||||
|
@ -321,14 +321,8 @@ CONFIG_LLC=m
|
|||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_AF_RXRPC 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_RFKILL is not set
|
||||
# CONFIG_NET_9P is not set
|
||||
|
||||
|
@ -359,6 +353,7 @@ CONFIG_MTD_CMDLINE_PARTS=y
|
|||
# User Modules And Translation Layers
|
||||
#
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_HAVE_MTD_OTP=y
|
||||
CONFIG_MTD_BLKDEVS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
# CONFIG_FTL is not set
|
||||
|
@ -407,6 +402,8 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
|
|||
# Self-contained MTD device drivers
|
||||
#
|
||||
CONFIG_MTD_DATAFLASH=m
|
||||
# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
|
||||
CONFIG_MTD_DATAFLASH_OTP=y
|
||||
CONFIG_MTD_M25P80=m
|
||||
CONFIG_M25PXX_USE_FAST_READ=y
|
||||
# CONFIG_MTD_SLRAM is not set
|
||||
|
@ -464,9 +461,10 @@ CONFIG_ATMEL_TCLIB=y
|
|||
CONFIG_ATMEL_TCB_CLKSRC=y
|
||||
CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0
|
||||
# CONFIG_EEPROM_93CX6 is not set
|
||||
# CONFIG_ICS932S401 is not set
|
||||
CONFIG_ATMEL_SSC=m
|
||||
# CONFIG_ENCLOSURE_SERVICES is not set
|
||||
# CONFIG_HAVE_IDE is not set
|
||||
# CONFIG_C2PORT is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
|
@ -548,6 +546,9 @@ CONFIG_MACB=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_B44 is not set
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
|
@ -653,6 +654,7 @@ CONFIG_UNIX98_PTYS=y
|
|||
CONFIG_I2C=m
|
||||
CONFIG_I2C_BOARDINFO=y
|
||||
CONFIG_I2C_CHARDEV=m
|
||||
CONFIG_I2C_HELPER_AUTO=y
|
||||
CONFIG_I2C_ALGOBIT=m
|
||||
|
||||
#
|
||||
|
@ -716,6 +718,10 @@ CONFIG_GPIOLIB=y
|
|||
# CONFIG_DEBUG_GPIO is not set
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
|
||||
#
|
||||
# Memory mapped GPIO expanders:
|
||||
#
|
||||
|
||||
#
|
||||
# I2C GPIO expanders:
|
||||
#
|
||||
|
@ -745,11 +751,11 @@ CONFIG_WATCHDOG=y
|
|||
#
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
CONFIG_AT32AP700X_WDT=y
|
||||
CONFIG_SSB_POSSIBLE=y
|
||||
|
||||
#
|
||||
# Sonics Silicon Backplane
|
||||
#
|
||||
CONFIG_SSB_POSSIBLE=y
|
||||
# CONFIG_SSB is not set
|
||||
|
||||
#
|
||||
|
@ -758,6 +764,10 @@ CONFIG_SSB_POSSIBLE=y
|
|||
# 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_MFD_WM8400 is not set
|
||||
# CONFIG_MFD_WM8350_I2C is not set
|
||||
# CONFIG_REGULATOR is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
|
@ -783,6 +793,7 @@ CONFIG_SSB_POSSIBLE=y
|
|||
CONFIG_FB=y
|
||||
# CONFIG_FIRMWARE_EDID is not set
|
||||
# CONFIG_FB_DDC is not set
|
||||
# CONFIG_FB_BOOT_VESA_SUPPORT is not set
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
|
@ -804,10 +815,13 @@ CONFIG_FB_CFB_IMAGEBLIT=y
|
|||
# CONFIG_FB_S1D13XXX is not set
|
||||
CONFIG_FB_ATMEL=y
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
# CONFIG_FB_METRONOME is not set
|
||||
# CONFIG_FB_MB862XX is not set
|
||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||
CONFIG_LCD_CLASS_DEVICE=y
|
||||
CONFIG_LCD_LTV350QV=y
|
||||
# CONFIG_LCD_ILI9320 is not set
|
||||
# CONFIG_LCD_TDO24M is not set
|
||||
# CONFIG_LCD_VGG2432A4 is not set
|
||||
# CONFIG_LCD_PLATFORM is not set
|
||||
# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
|
||||
|
@ -818,6 +832,7 @@ CONFIG_LCD_LTV350QV=y
|
|||
# CONFIG_DISPLAY_SUPPORT is not set
|
||||
# CONFIG_LOGO is not set
|
||||
CONFIG_SOUND=m
|
||||
CONFIG_SOUND_OSS_CORE=y
|
||||
CONFIG_SND=m
|
||||
CONFIG_SND_TIMER=m
|
||||
CONFIG_SND_PCM=m
|
||||
|
@ -848,28 +863,32 @@ CONFIG_USB_SUPPORT=y
|
|||
# CONFIG_USB_ARCH_HAS_EHCI is not set
|
||||
# CONFIG_USB_OTG_WHITELIST is not set
|
||||
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
|
||||
# CONFIG_USB_MUSB_HDRC is not set
|
||||
# CONFIG_USB_GADGET_MUSB_HDRC is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
|
||||
#
|
||||
CONFIG_USB_GADGET=y
|
||||
# CONFIG_USB_GADGET_DEBUG is not set
|
||||
# CONFIG_USB_GADGET_DEBUG_FILES is not set
|
||||
# CONFIG_USB_GADGET_DEBUG_FS is not set
|
||||
CONFIG_USB_GADGET_VBUS_DRAW=2
|
||||
CONFIG_USB_GADGET_SELECTED=y
|
||||
# CONFIG_USB_GADGET_AMD5536UDC is not set
|
||||
# CONFIG_USB_GADGET_AT91 is not set
|
||||
CONFIG_USB_GADGET_ATMEL_USBA=y
|
||||
CONFIG_USB_ATMEL_USBA=y
|
||||
# CONFIG_USB_GADGET_FSL_USB2 is not set
|
||||
# CONFIG_USB_GADGET_NET2280 is not set
|
||||
# CONFIG_USB_GADGET_PXA25X is not set
|
||||
# CONFIG_USB_GADGET_M66592 is not set
|
||||
# CONFIG_USB_GADGET_PXA27X is not set
|
||||
# CONFIG_USB_GADGET_GOKU is not set
|
||||
# CONFIG_USB_GADGET_LH7A40X is not set
|
||||
# CONFIG_USB_GADGET_OMAP is not set
|
||||
# CONFIG_USB_GADGET_PXA25X is not set
|
||||
# CONFIG_USB_GADGET_PXA27X is not set
|
||||
# CONFIG_USB_GADGET_S3C2410 is not set
|
||||
# CONFIG_USB_GADGET_AT91 is not set
|
||||
# CONFIG_USB_GADGET_M66592 is not set
|
||||
# CONFIG_USB_GADGET_AMD5536UDC is not set
|
||||
# CONFIG_USB_GADGET_FSL_QE is not set
|
||||
# CONFIG_USB_GADGET_NET2280 is not set
|
||||
# CONFIG_USB_GADGET_GOKU is not set
|
||||
# CONFIG_USB_GADGET_DUMMY_HCD is not set
|
||||
CONFIG_USB_GADGET_DUALSPEED=y
|
||||
CONFIG_USB_ZERO=m
|
||||
|
@ -887,7 +906,7 @@ CONFIG_MMC=y
|
|||
# CONFIG_MMC_UNSAFE_RESUME is not set
|
||||
|
||||
#
|
||||
# MMC/SD Card Drivers
|
||||
# MMC/SD/SDIO Card Drivers
|
||||
#
|
||||
CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_BLOCK_BOUNCE=y
|
||||
|
@ -895,10 +914,11 @@ CONFIG_MMC_BLOCK_BOUNCE=y
|
|||
# CONFIG_MMC_TEST is not set
|
||||
|
||||
#
|
||||
# MMC/SD Host Controller Drivers
|
||||
# MMC/SD/SDIO Host Controller Drivers
|
||||
#
|
||||
# CONFIG_MMC_SDHCI is not set
|
||||
CONFIG_MMC_ATMELMCI=y
|
||||
# CONFIG_MMC_ATMELMCI_DMA is not set
|
||||
CONFIG_MMC_SPI=m
|
||||
# CONFIG_MEMSTICK is not set
|
||||
CONFIG_NEW_LEDS=y
|
||||
|
@ -918,6 +938,7 @@ CONFIG_LEDS_GPIO=m
|
|||
CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_LEDS_TRIGGER_TIMER=m
|
||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
|
||||
# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
|
||||
CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
|
||||
# CONFIG_ACCESSIBILITY is not set
|
||||
CONFIG_RTC_LIB=y
|
||||
|
@ -950,25 +971,31 @@ CONFIG_RTC_INTF_DEV=y
|
|||
# CONFIG_RTC_DRV_M41T80 is not set
|
||||
# CONFIG_RTC_DRV_S35390A is not set
|
||||
# CONFIG_RTC_DRV_FM3130 is not set
|
||||
# CONFIG_RTC_DRV_RX8581 is not set
|
||||
|
||||
#
|
||||
# SPI RTC drivers
|
||||
#
|
||||
# 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 is not set
|
||||
# CONFIG_RTC_DRV_DS3234 is not set
|
||||
|
||||
#
|
||||
# Platform RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_DS1286 is not set
|
||||
# CONFIG_RTC_DRV_DS1511 is not set
|
||||
# CONFIG_RTC_DRV_DS1553 is not set
|
||||
# CONFIG_RTC_DRV_DS1742 is not set
|
||||
# CONFIG_RTC_DRV_STK17TA8 is not set
|
||||
# CONFIG_RTC_DRV_M48T86 is not set
|
||||
# CONFIG_RTC_DRV_M48T35 is not set
|
||||
# CONFIG_RTC_DRV_M48T59 is not set
|
||||
# CONFIG_RTC_DRV_BQ4802 is not set
|
||||
# CONFIG_RTC_DRV_V3020 is not set
|
||||
|
||||
#
|
||||
|
@ -989,6 +1016,8 @@ CONFIG_DMA_ENGINE=y
|
|||
# CONFIG_NET_DMA is not set
|
||||
CONFIG_DMATEST=m
|
||||
# CONFIG_UIO is not set
|
||||
# CONFIG_STAGING is not set
|
||||
CONFIG_STAGING_EXCLUDE_BUILD=y
|
||||
|
||||
#
|
||||
# File systems
|
||||
|
@ -998,12 +1027,17 @@ CONFIG_EXT2_FS=m
|
|||
# CONFIG_EXT2_FS_XIP is not set
|
||||
CONFIG_EXT3_FS=m
|
||||
# CONFIG_EXT3_FS_XATTR is not set
|
||||
# CONFIG_EXT4DEV_FS is not set
|
||||
CONFIG_EXT4_FS=m
|
||||
CONFIG_EXT4DEV_COMPAT=y
|
||||
# CONFIG_EXT4_FS_XATTR is not set
|
||||
CONFIG_JBD=m
|
||||
# CONFIG_JBD_DEBUG is not set
|
||||
CONFIG_JBD2=m
|
||||
# CONFIG_JBD2_DEBUG 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 is not set
|
||||
|
@ -1036,6 +1070,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
|||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||
|
@ -1054,7 +1089,8 @@ CONFIG_TMPFS=y
|
|||
# CONFIG_EFS_FS is not set
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_JFFS2_FS_DEBUG=0
|
||||
# CONFIG_JFFS2_FS_WRITEBUFFER is not set
|
||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||
# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
|
||||
# CONFIG_JFFS2_SUMMARY is not set
|
||||
# CONFIG_JFFS2_FS_XATTR is not set
|
||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||
|
@ -1088,6 +1124,7 @@ CONFIG_LOCKD=y
|
|||
CONFIG_LOCKD_V4=y
|
||||
CONFIG_NFS_COMMON=y
|
||||
CONFIG_SUNRPC=y
|
||||
# CONFIG_SUNRPC_REGISTER_V4 is not set
|
||||
# CONFIG_RPCSEC_GSS_KRB5 is not set
|
||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||
# CONFIG_SMB_FS is not set
|
||||
|
@ -1185,10 +1222,21 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_BOOT_PRINTK_DELAY is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
# CONFIG_KPROBES_SANITY_TEST is not set
|
||||
# CONFIG_BACKTRACE_SELF_TEST is not set
|
||||
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
|
||||
# CONFIG_LKDTM is not set
|
||||
# CONFIG_FAULT_INJECTION is not set
|
||||
|
||||
#
|
||||
# Tracers
|
||||
#
|
||||
# CONFIG_IRQSOFF_TRACER is not set
|
||||
# CONFIG_SCHED_TRACER is not set
|
||||
# CONFIG_CONTEXT_SWITCH_TRACER is not set
|
||||
# CONFIG_BOOT_TRACER is not set
|
||||
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
|
||||
#
|
||||
|
@ -1196,17 +1244,26 @@ CONFIG_FRAME_POINTER=y
|
|||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
# CONFIG_SECURITYFS is not set
|
||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||
CONFIG_CRYPTO=y
|
||||
|
||||
#
|
||||
# Crypto core or helper
|
||||
#
|
||||
CONFIG_CRYPTO_FIPS=y
|
||||
CONFIG_CRYPTO_ALGAPI=y
|
||||
CONFIG_CRYPTO_ALGAPI2=y
|
||||
CONFIG_CRYPTO_AEAD=m
|
||||
CONFIG_CRYPTO_AEAD2=y
|
||||
CONFIG_CRYPTO_BLKCIPHER=m
|
||||
CONFIG_CRYPTO_BLKCIPHER2=y
|
||||
CONFIG_CRYPTO_HASH=m
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
CONFIG_CRYPTO_RNG=m
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_MANAGER=m
|
||||
CONFIG_CRYPTO_MANAGER2=y
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
|
@ -1257,7 +1314,7 @@ CONFIG_CRYPTO_SHA1=m
|
|||
#
|
||||
# Ciphers
|
||||
#
|
||||
# CONFIG_CRYPTO_AES is not set
|
||||
CONFIG_CRYPTO_AES=m
|
||||
# CONFIG_CRYPTO_ANUBIS is not set
|
||||
# CONFIG_CRYPTO_ARC4 is not set
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
|
@ -1278,14 +1335,17 @@ CONFIG_CRYPTO_DES=m
|
|||
#
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
CONFIG_CRYPTO_LZO=y
|
||||
|
||||
#
|
||||
# Random Number Generation
|
||||
#
|
||||
CONFIG_CRYPTO_ANSI_CPRNG=m
|
||||
# CONFIG_CRYPTO_HW is not set
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
# CONFIG_GENERIC_FIND_FIRST_BIT is not set
|
||||
# CONFIG_GENERIC_FIND_NEXT_BIT is not set
|
||||
CONFIG_CRC_CCITT=m
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_CRC_T10DIF=m
|
||||
|
|
|
@ -967,28 +967,28 @@ static inline void configure_usart0_pins(void)
|
|||
{
|
||||
u32 pin_mask = (1 << 8) | (1 << 9); /* RXD & TXD */
|
||||
|
||||
select_peripheral(PIOA, pin_mask, PERIPH_B, 0);
|
||||
select_peripheral(PIOA, pin_mask, PERIPH_B, AT32_GPIOF_PULLUP);
|
||||
}
|
||||
|
||||
static inline void configure_usart1_pins(void)
|
||||
{
|
||||
u32 pin_mask = (1 << 17) | (1 << 18); /* RXD & TXD */
|
||||
|
||||
select_peripheral(PIOA, pin_mask, PERIPH_A, 0);
|
||||
select_peripheral(PIOA, pin_mask, PERIPH_A, AT32_GPIOF_PULLUP);
|
||||
}
|
||||
|
||||
static inline void configure_usart2_pins(void)
|
||||
{
|
||||
u32 pin_mask = (1 << 26) | (1 << 27); /* RXD & TXD */
|
||||
|
||||
select_peripheral(PIOB, pin_mask, PERIPH_B, 0);
|
||||
select_peripheral(PIOB, pin_mask, PERIPH_B, AT32_GPIOF_PULLUP);
|
||||
}
|
||||
|
||||
static inline void configure_usart3_pins(void)
|
||||
{
|
||||
u32 pin_mask = (1 << 18) | (1 << 17); /* RXD & TXD */
|
||||
|
||||
select_peripheral(PIOB, pin_mask, PERIPH_B, 0);
|
||||
select_peripheral(PIOB, pin_mask, PERIPH_B, AT32_GPIOF_PULLUP);
|
||||
}
|
||||
|
||||
static struct platform_device *__initdata at32_usarts[4];
|
||||
|
|
|
@ -50,9 +50,8 @@ static inline __attribute_const__ __u32 __arch_swab32(__u32 x)
|
|||
static inline __attribute_const__ __u64 __arch_swab64(__u64 x)
|
||||
{
|
||||
__asm__(
|
||||
" dsbh %0, %1 \n"
|
||||
" dshd %0, %0 \n"
|
||||
" drotr %0, %0, 32 \n"
|
||||
" dsbh %0, %1\n"
|
||||
" dshd %0, %0"
|
||||
: "=r" (x)
|
||||
: "r" (x));
|
||||
|
||||
|
|
|
@ -232,7 +232,7 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
|
|||
*/
|
||||
#ifdef __MIPSEB__
|
||||
#define ELF_DATA ELFDATA2MSB
|
||||
#elif __MIPSEL__
|
||||
#elif defined(__MIPSEL__)
|
||||
#define ELF_DATA ELFDATA2LSB
|
||||
#endif
|
||||
#define ELF_ARCH EM_MIPS
|
||||
|
|
|
@ -44,9 +44,12 @@ static inline void flush_tlb_mm(struct mm_struct *mm)
|
|||
{
|
||||
BUG_ON(mm == &init_mm); /* Should never happen */
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
#if 1 || defined(CONFIG_SMP)
|
||||
flush_tlb_all();
|
||||
#else
|
||||
/* FIXME: currently broken, causing space id and protection ids
|
||||
* to go out of sync, resulting in faults on userspace accesses.
|
||||
*/
|
||||
if (mm) {
|
||||
if (mm->context != 0)
|
||||
free_sid(mm->context);
|
||||
|
|
|
@ -62,6 +62,8 @@ struct sparc_stackf {
|
|||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <asm/system.h>
|
||||
|
||||
static inline bool pt_regs_is_syscall(struct pt_regs *regs)
|
||||
{
|
||||
return (regs->psr & PSR_SYSCALL);
|
||||
|
@ -72,6 +74,14 @@ static inline bool pt_regs_clear_syscall(struct pt_regs *regs)
|
|||
return (regs->psr &= ~PSR_SYSCALL);
|
||||
}
|
||||
|
||||
#define arch_ptrace_stop_needed(exit_code, info) \
|
||||
({ flush_user_windows(); \
|
||||
current_thread_info()->w_saved != 0; \
|
||||
})
|
||||
|
||||
#define arch_ptrace_stop(exit_code, info) \
|
||||
synchronize_user_stack()
|
||||
|
||||
#define user_mode(regs) (!((regs)->psr & PSR_PS))
|
||||
#define instruction_pointer(regs) ((regs)->pc)
|
||||
#define user_stack_pointer(regs) ((regs)->u_regs[UREG_FP])
|
||||
|
|
|
@ -114,6 +114,7 @@ struct sparc_trapf {
|
|||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/threads.h>
|
||||
#include <asm/system.h>
|
||||
|
||||
static inline int pt_regs_trap_type(struct pt_regs *regs)
|
||||
{
|
||||
|
@ -130,6 +131,14 @@ static inline bool pt_regs_clear_syscall(struct pt_regs *regs)
|
|||
return (regs->tstate &= ~TSTATE_SYSCALL);
|
||||
}
|
||||
|
||||
#define arch_ptrace_stop_needed(exit_code, info) \
|
||||
({ flush_user_windows(); \
|
||||
get_thread_wsaved() != 0; \
|
||||
})
|
||||
|
||||
#define arch_ptrace_stop(exit_code, info) \
|
||||
synchronize_user_stack()
|
||||
|
||||
struct global_reg_snapshot {
|
||||
unsigned long tstate;
|
||||
unsigned long tpc;
|
||||
|
|
|
@ -252,12 +252,21 @@ extern void __cpuinit ds_init_intel(struct cpuinfo_x86 *);
|
|||
*/
|
||||
extern void ds_switch_to(struct task_struct *prev, struct task_struct *next);
|
||||
|
||||
/*
|
||||
* Task clone/init and cleanup work
|
||||
*/
|
||||
extern void ds_copy_thread(struct task_struct *tsk, struct task_struct *father);
|
||||
extern void ds_exit_thread(struct task_struct *tsk);
|
||||
|
||||
#else /* CONFIG_X86_DS */
|
||||
|
||||
struct cpuinfo_x86;
|
||||
static inline void __cpuinit ds_init_intel(struct cpuinfo_x86 *ignored) {}
|
||||
static inline void ds_switch_to(struct task_struct *prev,
|
||||
struct task_struct *next) {}
|
||||
static inline void ds_copy_thread(struct task_struct *tsk,
|
||||
struct task_struct *father) {}
|
||||
static inline void ds_exit_thread(struct task_struct *tsk) {}
|
||||
|
||||
#endif /* CONFIG_X86_DS */
|
||||
#endif /* _ASM_X86_DS_H */
|
||||
|
|
|
@ -85,7 +85,8 @@ static inline void native_write_msr(unsigned int msr,
|
|||
asm volatile("wrmsr" : : "c" (msr), "a"(low), "d" (high) : "memory");
|
||||
}
|
||||
|
||||
static inline int native_write_msr_safe(unsigned int msr,
|
||||
/* Can be uninlined because referenced by paravirt */
|
||||
notrace static inline int native_write_msr_safe(unsigned int msr,
|
||||
unsigned low, unsigned high)
|
||||
{
|
||||
int err;
|
||||
|
|
|
@ -235,6 +235,13 @@ extern int do_get_thread_area(struct task_struct *p, int idx,
|
|||
extern int do_set_thread_area(struct task_struct *p, int idx,
|
||||
struct user_desc __user *info, int can_allocate);
|
||||
|
||||
extern void x86_ptrace_untrace(struct task_struct *);
|
||||
extern void x86_ptrace_fork(struct task_struct *child,
|
||||
unsigned long clone_flags);
|
||||
|
||||
#define arch_ptrace_untrace(tsk) x86_ptrace_untrace(tsk)
|
||||
#define arch_ptrace_fork(child, flags) x86_ptrace_fork(child, flags)
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
|
|
@ -235,8 +235,9 @@ static int iommu_completion_wait(struct amd_iommu *iommu)
|
|||
status &= ~MMIO_STATUS_COM_WAIT_INT_MASK;
|
||||
writel(status, iommu->mmio_base + MMIO_STATUS_OFFSET);
|
||||
|
||||
if (unlikely((i == EXIT_LOOP_COUNT) && printk_ratelimit()))
|
||||
printk(KERN_WARNING "AMD IOMMU: Completion wait loop failed\n");
|
||||
if (unlikely(i == EXIT_LOOP_COUNT))
|
||||
panic("AMD IOMMU: Completion wait loop failed\n");
|
||||
|
||||
out:
|
||||
spin_unlock_irqrestore(&iommu->lock, flags);
|
||||
|
||||
|
|
|
@ -427,6 +427,10 @@ static u8 * __init alloc_command_buffer(struct amd_iommu *iommu)
|
|||
memcpy_toio(iommu->mmio_base + MMIO_CMD_BUF_OFFSET,
|
||||
&entry, sizeof(entry));
|
||||
|
||||
/* set head and tail to zero manually */
|
||||
writel(0x00, iommu->mmio_base + MMIO_CMD_HEAD_OFFSET);
|
||||
writel(0x00, iommu->mmio_base + MMIO_CMD_TAIL_OFFSET);
|
||||
|
||||
iommu_feature_enable(iommu, CONTROL_CMDBUF_EN);
|
||||
|
||||
return cmd_buf;
|
||||
|
@ -1074,7 +1078,8 @@ int __init amd_iommu_init(void)
|
|||
goto free;
|
||||
|
||||
/* IOMMU rlookup table - find the IOMMU for a specific device */
|
||||
amd_iommu_rlookup_table = (void *)__get_free_pages(GFP_KERNEL,
|
||||
amd_iommu_rlookup_table = (void *)__get_free_pages(
|
||||
GFP_KERNEL | __GFP_ZERO,
|
||||
get_order(rlookup_table_size));
|
||||
if (amd_iommu_rlookup_table == NULL)
|
||||
goto free;
|
||||
|
|
|
@ -2,6 +2,11 @@
|
|||
# Makefile for x86-compatible CPU details and quirks
|
||||
#
|
||||
|
||||
# Don't trace early stages of a secondary CPU boot
|
||||
ifdef CONFIG_FUNCTION_TRACER
|
||||
CFLAGS_REMOVE_common.o = -pg
|
||||
endif
|
||||
|
||||
obj-y := intel_cacheinfo.o addon_cpuid_features.o
|
||||
obj-y += proc.o capflags.o powerflags.o common.o
|
||||
|
||||
|
|
|
@ -510,12 +510,9 @@ static void __cpuinit mce_cpu_features(struct cpuinfo_x86 *c)
|
|||
*/
|
||||
void __cpuinit mcheck_init(struct cpuinfo_x86 *c)
|
||||
{
|
||||
static cpumask_t mce_cpus = CPU_MASK_NONE;
|
||||
|
||||
mce_cpu_quirks(c);
|
||||
|
||||
if (mce_dont_init ||
|
||||
cpu_test_and_set(smp_processor_id(), mce_cpus) ||
|
||||
!mce_available(c))
|
||||
return;
|
||||
|
||||
|
|
|
@ -1017,3 +1017,14 @@ void ds_switch_to(struct task_struct *prev, struct task_struct *next)
|
|||
|
||||
update_debugctlmsr(next->thread.debugctlmsr);
|
||||
}
|
||||
|
||||
void ds_copy_thread(struct task_struct *tsk, struct task_struct *father)
|
||||
{
|
||||
clear_tsk_thread_flag(tsk, TIF_DS_AREA_MSR);
|
||||
tsk->thread.ds_ctx = NULL;
|
||||
}
|
||||
|
||||
void ds_exit_thread(struct task_struct *tsk)
|
||||
{
|
||||
WARN_ON(tsk->thread.ds_ctx);
|
||||
}
|
||||
|
|
|
@ -272,13 +272,18 @@ static struct attribute_group mc_attr_group = {
|
|||
.name = "microcode",
|
||||
};
|
||||
|
||||
static void microcode_fini_cpu(int cpu)
|
||||
static void __microcode_fini_cpu(int cpu)
|
||||
{
|
||||
struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
|
||||
|
||||
mutex_lock(µcode_mutex);
|
||||
microcode_ops->microcode_fini_cpu(cpu);
|
||||
uci->valid = 0;
|
||||
}
|
||||
|
||||
static void microcode_fini_cpu(int cpu)
|
||||
{
|
||||
mutex_lock(µcode_mutex);
|
||||
__microcode_fini_cpu(cpu);
|
||||
mutex_unlock(µcode_mutex);
|
||||
}
|
||||
|
||||
|
@ -306,12 +311,16 @@ static int microcode_resume_cpu(int cpu)
|
|||
* to this cpu (a bit of paranoia):
|
||||
*/
|
||||
if (microcode_ops->collect_cpu_info(cpu, &nsig)) {
|
||||
microcode_fini_cpu(cpu);
|
||||
__microcode_fini_cpu(cpu);
|
||||
printk(KERN_ERR "failed to collect_cpu_info for resuming cpu #%d\n",
|
||||
cpu);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (memcmp(&nsig, &uci->cpu_sig, sizeof(nsig))) {
|
||||
microcode_fini_cpu(cpu);
|
||||
if ((nsig.sig != uci->cpu_sig.sig) || (nsig.pf != uci->cpu_sig.pf)) {
|
||||
__microcode_fini_cpu(cpu);
|
||||
printk(KERN_ERR "cached ucode doesn't match the resuming cpu #%d\n",
|
||||
cpu);
|
||||
/* Should we look for a new ucode here? */
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -155,6 +155,7 @@ static DEFINE_SPINLOCK(microcode_update_lock);
|
|||
static int collect_cpu_info(int cpu_num, struct cpu_signature *csig)
|
||||
{
|
||||
struct cpuinfo_x86 *c = &cpu_data(cpu_num);
|
||||
unsigned long flags;
|
||||
unsigned int val[2];
|
||||
|
||||
memset(csig, 0, sizeof(*csig));
|
||||
|
@ -174,11 +175,16 @@ static int collect_cpu_info(int cpu_num, struct cpu_signature *csig)
|
|||
csig->pf = 1 << ((val[1] >> 18) & 7);
|
||||
}
|
||||
|
||||
/* serialize access to the physical write to MSR 0x79 */
|
||||
spin_lock_irqsave(µcode_update_lock, flags);
|
||||
|
||||
wrmsr(MSR_IA32_UCODE_REV, 0, 0);
|
||||
/* see notes above for revision 1.07. Apparent chip bug */
|
||||
sync_core();
|
||||
/* get the current revision from MSR 0x8B */
|
||||
rdmsr(MSR_IA32_UCODE_REV, val[0], csig->rev);
|
||||
spin_unlock_irqrestore(µcode_update_lock, flags);
|
||||
|
||||
pr_debug("microcode: collect_cpu_info : sig=0x%x, pf=0x%x, rev=0x%x\n",
|
||||
csig->sig, csig->pf, csig->rev);
|
||||
|
||||
|
|
|
@ -745,10 +745,8 @@ void __init gart_iommu_init(void)
|
|||
unsigned long scratch;
|
||||
long i;
|
||||
|
||||
if (cache_k8_northbridges() < 0 || num_k8_northbridges == 0) {
|
||||
printk(KERN_INFO "PCI-GART: No AMD GART found.\n");
|
||||
if (cache_k8_northbridges() < 0 || num_k8_northbridges == 0)
|
||||
return;
|
||||
}
|
||||
|
||||
#ifndef CONFIG_AGP_AMD64
|
||||
no_agp = 1;
|
||||
|
|
|
@ -60,6 +60,7 @@
|
|||
#include <asm/idle.h>
|
||||
#include <asm/syscalls.h>
|
||||
#include <asm/smp.h>
|
||||
#include <asm/ds.h>
|
||||
|
||||
asmlinkage void ret_from_fork(void) __asm__("ret_from_fork");
|
||||
|
||||
|
@ -251,17 +252,8 @@ void exit_thread(void)
|
|||
tss->x86_tss.io_bitmap_base = INVALID_IO_BITMAP_OFFSET;
|
||||
put_cpu();
|
||||
}
|
||||
#ifdef CONFIG_X86_DS
|
||||
/* Free any BTS tracers that have not been properly released. */
|
||||
if (unlikely(current->bts)) {
|
||||
ds_release_bts(current->bts);
|
||||
current->bts = NULL;
|
||||
|
||||
kfree(current->bts_buffer);
|
||||
current->bts_buffer = NULL;
|
||||
current->bts_size = 0;
|
||||
}
|
||||
#endif /* CONFIG_X86_DS */
|
||||
ds_exit_thread(current);
|
||||
}
|
||||
|
||||
void flush_thread(void)
|
||||
|
@ -343,6 +335,12 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long sp,
|
|||
kfree(p->thread.io_bitmap_ptr);
|
||||
p->thread.io_bitmap_max = 0;
|
||||
}
|
||||
|
||||
ds_copy_thread(p, current);
|
||||
|
||||
clear_tsk_thread_flag(p, TIF_DEBUGCTLMSR);
|
||||
p->thread.debugctlmsr = 0;
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
#include <asm/ia32.h>
|
||||
#include <asm/idle.h>
|
||||
#include <asm/syscalls.h>
|
||||
#include <asm/ds.h>
|
||||
|
||||
asmlinkage extern void ret_from_fork(void);
|
||||
|
||||
|
@ -236,17 +237,8 @@ void exit_thread(void)
|
|||
t->io_bitmap_max = 0;
|
||||
put_cpu();
|
||||
}
|
||||
#ifdef CONFIG_X86_DS
|
||||
/* Free any BTS tracers that have not been properly released. */
|
||||
if (unlikely(current->bts)) {
|
||||
ds_release_bts(current->bts);
|
||||
current->bts = NULL;
|
||||
|
||||
kfree(current->bts_buffer);
|
||||
current->bts_buffer = NULL;
|
||||
current->bts_size = 0;
|
||||
}
|
||||
#endif /* CONFIG_X86_DS */
|
||||
ds_exit_thread(current);
|
||||
}
|
||||
|
||||
void flush_thread(void)
|
||||
|
@ -376,6 +368,12 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long sp,
|
|||
if (err)
|
||||
goto out;
|
||||
}
|
||||
|
||||
ds_copy_thread(p, me);
|
||||
|
||||
clear_tsk_thread_flag(p, TIF_DEBUGCTLMSR);
|
||||
p->thread.debugctlmsr = 0;
|
||||
|
||||
err = 0;
|
||||
out:
|
||||
if (err && p->thread.io_bitmap_ptr) {
|
||||
|
|
|
@ -650,6 +650,24 @@ static int ptrace_bts_drain(struct task_struct *child,
|
|||
return drained;
|
||||
}
|
||||
|
||||
static int ptrace_bts_allocate_buffer(struct task_struct *child, size_t size)
|
||||
{
|
||||
child->bts_buffer = alloc_locked_buffer(size);
|
||||
if (!child->bts_buffer)
|
||||
return -ENOMEM;
|
||||
|
||||
child->bts_size = size;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ptrace_bts_free_buffer(struct task_struct *child)
|
||||
{
|
||||
free_locked_buffer(child->bts_buffer, child->bts_size);
|
||||
child->bts_buffer = NULL;
|
||||
child->bts_size = 0;
|
||||
}
|
||||
|
||||
static int ptrace_bts_config(struct task_struct *child,
|
||||
long cfg_size,
|
||||
const struct ptrace_bts_config __user *ucfg)
|
||||
|
@ -679,14 +697,13 @@ static int ptrace_bts_config(struct task_struct *child,
|
|||
|
||||
if ((cfg.flags & PTRACE_BTS_O_ALLOC) &&
|
||||
(cfg.size != child->bts_size)) {
|
||||
kfree(child->bts_buffer);
|
||||
int error;
|
||||
|
||||
child->bts_size = cfg.size;
|
||||
child->bts_buffer = kzalloc(cfg.size, GFP_KERNEL);
|
||||
if (!child->bts_buffer) {
|
||||
child->bts_size = 0;
|
||||
return -ENOMEM;
|
||||
}
|
||||
ptrace_bts_free_buffer(child);
|
||||
|
||||
error = ptrace_bts_allocate_buffer(child, cfg.size);
|
||||
if (error < 0)
|
||||
return error;
|
||||
}
|
||||
|
||||
if (cfg.flags & PTRACE_BTS_O_TRACE)
|
||||
|
@ -701,10 +718,8 @@ static int ptrace_bts_config(struct task_struct *child,
|
|||
if (IS_ERR(child->bts)) {
|
||||
int error = PTR_ERR(child->bts);
|
||||
|
||||
kfree(child->bts_buffer);
|
||||
ptrace_bts_free_buffer(child);
|
||||
child->bts = NULL;
|
||||
child->bts_buffer = NULL;
|
||||
child->bts_size = 0;
|
||||
|
||||
return error;
|
||||
}
|
||||
|
@ -769,8 +784,55 @@ static int ptrace_bts_size(struct task_struct *child)
|
|||
|
||||
return (trace->ds.top - trace->ds.begin) / trace->ds.size;
|
||||
}
|
||||
|
||||
static void ptrace_bts_fork(struct task_struct *tsk)
|
||||
{
|
||||
tsk->bts = NULL;
|
||||
tsk->bts_buffer = NULL;
|
||||
tsk->bts_size = 0;
|
||||
tsk->thread.bts_ovfl_signal = 0;
|
||||
}
|
||||
|
||||
static void ptrace_bts_untrace(struct task_struct *child)
|
||||
{
|
||||
if (unlikely(child->bts)) {
|
||||
ds_release_bts(child->bts);
|
||||
child->bts = NULL;
|
||||
|
||||
/* We cannot update total_vm and locked_vm since
|
||||
child's mm is already gone. But we can reclaim the
|
||||
memory. */
|
||||
kfree(child->bts_buffer);
|
||||
child->bts_buffer = NULL;
|
||||
child->bts_size = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void ptrace_bts_detach(struct task_struct *child)
|
||||
{
|
||||
if (unlikely(child->bts)) {
|
||||
ds_release_bts(child->bts);
|
||||
child->bts = NULL;
|
||||
|
||||
ptrace_bts_free_buffer(child);
|
||||
}
|
||||
}
|
||||
#else
|
||||
static inline void ptrace_bts_fork(struct task_struct *tsk) {}
|
||||
static inline void ptrace_bts_detach(struct task_struct *child) {}
|
||||
static inline void ptrace_bts_untrace(struct task_struct *child) {}
|
||||
#endif /* CONFIG_X86_PTRACE_BTS */
|
||||
|
||||
void x86_ptrace_fork(struct task_struct *child, unsigned long clone_flags)
|
||||
{
|
||||
ptrace_bts_fork(child);
|
||||
}
|
||||
|
||||
void x86_ptrace_untrace(struct task_struct *child)
|
||||
{
|
||||
ptrace_bts_untrace(child);
|
||||
}
|
||||
|
||||
/*
|
||||
* Called by kernel/ptrace.c when detaching..
|
||||
*
|
||||
|
@ -782,16 +844,7 @@ void ptrace_disable(struct task_struct *child)
|
|||
#ifdef TIF_SYSCALL_EMU
|
||||
clear_tsk_thread_flag(child, TIF_SYSCALL_EMU);
|
||||
#endif
|
||||
#ifdef CONFIG_X86_PTRACE_BTS
|
||||
if (child->bts) {
|
||||
ds_release_bts(child->bts);
|
||||
child->bts = NULL;
|
||||
|
||||
kfree(child->bts_buffer);
|
||||
child->bts_buffer = NULL;
|
||||
child->bts_size = 0;
|
||||
}
|
||||
#endif /* CONFIG_X86_PTRACE_BTS */
|
||||
ptrace_bts_detach(child);
|
||||
}
|
||||
|
||||
#if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION
|
||||
|
|
|
@ -287,7 +287,7 @@ static int __cpuinitdata unsafe_smp;
|
|||
/*
|
||||
* Activate a secondary processor.
|
||||
*/
|
||||
static void __cpuinit start_secondary(void *unused)
|
||||
notrace static void __cpuinit start_secondary(void *unused)
|
||||
{
|
||||
/*
|
||||
* Don't put *anything* before cpu_init(), SMP booting is too
|
||||
|
|
|
@ -53,10 +53,17 @@ do_async_xor(struct dma_chan *chan, struct page *dest, struct page **src_list,
|
|||
int xor_src_cnt;
|
||||
dma_addr_t dma_dest;
|
||||
|
||||
dma_dest = dma_map_page(dma->dev, dest, offset, len, DMA_FROM_DEVICE);
|
||||
for (i = 0; i < src_cnt; i++)
|
||||
/* map the dest bidrectional in case it is re-used as a source */
|
||||
dma_dest = dma_map_page(dma->dev, dest, offset, len, DMA_BIDIRECTIONAL);
|
||||
for (i = 0; i < src_cnt; i++) {
|
||||
/* only map the dest once */
|
||||
if (unlikely(src_list[i] == dest)) {
|
||||
dma_src[i] = dma_dest;
|
||||
continue;
|
||||
}
|
||||
dma_src[i] = dma_map_page(dma->dev, src_list[i], offset,
|
||||
len, DMA_TO_DEVICE);
|
||||
}
|
||||
|
||||
while (src_cnt) {
|
||||
async_flags = flags;
|
||||
|
|
|
@ -688,14 +688,6 @@ void __init acpi_early_init(void)
|
|||
if (acpi_disabled)
|
||||
return;
|
||||
|
||||
/*
|
||||
* ACPI CA initializes acpi_dbg_level to non-zero, which means
|
||||
* we get debug output merely by turning on CONFIG_ACPI_DEBUG.
|
||||
* Turn it off so we don't get output unless the user specifies
|
||||
* acpi.debug_level.
|
||||
*/
|
||||
acpi_dbg_level = 0;
|
||||
|
||||
printk(KERN_INFO PREFIX "Core revision %08x\n", ACPI_CA_VERSION);
|
||||
|
||||
/* enable workarounds, unless strict ACPI spec. compliance */
|
||||
|
|
|
@ -64,7 +64,7 @@ u32 acpi_dbg_level = ACPI_DEBUG_DEFAULT;
|
|||
|
||||
/* Debug switch - layer (component) mask */
|
||||
|
||||
u32 acpi_dbg_layer = ACPI_COMPONENT_DEFAULT | ACPI_ALL_DRIVERS;
|
||||
u32 acpi_dbg_layer = 0;
|
||||
u32 acpi_gbl_nesting_level = 0;
|
||||
|
||||
/* Debugger globals */
|
||||
|
|
|
@ -1693,6 +1693,11 @@ static int rebuild_lun_table(ctlr_info_t *h, int first_time)
|
|||
for (i = 0; i <= h->highest_lun; i++) {
|
||||
int j;
|
||||
drv_found = 0;
|
||||
|
||||
/* skip holes in the array from already deleted drives */
|
||||
if (h->drv[i].raid_level == -1)
|
||||
continue;
|
||||
|
||||
for (j = 0; j < num_luns; j++) {
|
||||
memcpy(&lunid, &ld_buff->LUN[j][0], 4);
|
||||
lunid = le32_to_cpu(lunid);
|
||||
|
|
|
@ -388,7 +388,10 @@ int dma_async_device_register(struct dma_device *device)
|
|||
|
||||
init_completion(&device->done);
|
||||
kref_init(&device->refcount);
|
||||
|
||||
mutex_lock(&dma_list_mutex);
|
||||
device->dev_id = id++;
|
||||
mutex_unlock(&dma_list_mutex);
|
||||
|
||||
/* represent channels in sysfs. Probably want devs too */
|
||||
list_for_each_entry(chan, &device->channels, device_node) {
|
||||
|
|
|
@ -1341,10 +1341,12 @@ static void ioat_dma_start_null_desc(struct ioat_dma_chan *ioat_chan)
|
|||
*/
|
||||
#define IOAT_TEST_SIZE 2000
|
||||
|
||||
DECLARE_COMPLETION(test_completion);
|
||||
static void ioat_dma_test_callback(void *dma_async_param)
|
||||
{
|
||||
printk(KERN_ERR "ioatdma: ioat_dma_test_callback(%p)\n",
|
||||
dma_async_param);
|
||||
complete(&test_completion);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1410,7 +1412,8 @@ static int ioat_dma_self_test(struct ioatdma_device *device)
|
|||
goto free_resources;
|
||||
}
|
||||
device->common.device_issue_pending(dma_chan);
|
||||
msleep(1);
|
||||
|
||||
wait_for_completion_timeout(&test_completion, msecs_to_jiffies(3000));
|
||||
|
||||
if (device->common.device_is_tx_complete(dma_chan, cookie, NULL, NULL)
|
||||
!= DMA_SUCCESS) {
|
||||
|
|
|
@ -85,18 +85,28 @@ iop_adma_run_tx_complete_actions(struct iop_adma_desc_slot *desc,
|
|||
enum dma_ctrl_flags flags = desc->async_tx.flags;
|
||||
u32 src_cnt;
|
||||
dma_addr_t addr;
|
||||
dma_addr_t dest;
|
||||
|
||||
src_cnt = unmap->unmap_src_cnt;
|
||||
dest = iop_desc_get_dest_addr(unmap, iop_chan);
|
||||
if (!(flags & DMA_COMPL_SKIP_DEST_UNMAP)) {
|
||||
addr = iop_desc_get_dest_addr(unmap, iop_chan);
|
||||
dma_unmap_page(dev, addr, len, DMA_FROM_DEVICE);
|
||||
enum dma_data_direction dir;
|
||||
|
||||
if (src_cnt > 1) /* is xor? */
|
||||
dir = DMA_BIDIRECTIONAL;
|
||||
else
|
||||
dir = DMA_FROM_DEVICE;
|
||||
|
||||
dma_unmap_page(dev, dest, len, dir);
|
||||
}
|
||||
|
||||
if (!(flags & DMA_COMPL_SKIP_SRC_UNMAP)) {
|
||||
src_cnt = unmap->unmap_src_cnt;
|
||||
while (src_cnt--) {
|
||||
addr = iop_desc_get_src_addr(unmap,
|
||||
iop_chan,
|
||||
src_cnt);
|
||||
if (addr == dest)
|
||||
continue;
|
||||
dma_unmap_page(dev, addr, len,
|
||||
DMA_TO_DEVICE);
|
||||
}
|
||||
|
|
|
@ -311,17 +311,26 @@ mv_xor_run_tx_complete_actions(struct mv_xor_desc_slot *desc,
|
|||
enum dma_ctrl_flags flags = desc->async_tx.flags;
|
||||
u32 src_cnt;
|
||||
dma_addr_t addr;
|
||||
dma_addr_t dest;
|
||||
|
||||
src_cnt = unmap->unmap_src_cnt;
|
||||
dest = mv_desc_get_dest_addr(unmap);
|
||||
if (!(flags & DMA_COMPL_SKIP_DEST_UNMAP)) {
|
||||
addr = mv_desc_get_dest_addr(unmap);
|
||||
dma_unmap_page(dev, addr, len, DMA_FROM_DEVICE);
|
||||
enum dma_data_direction dir;
|
||||
|
||||
if (src_cnt > 1) /* is xor ? */
|
||||
dir = DMA_BIDIRECTIONAL;
|
||||
else
|
||||
dir = DMA_FROM_DEVICE;
|
||||
dma_unmap_page(dev, dest, len, dir);
|
||||
}
|
||||
|
||||
if (!(flags & DMA_COMPL_SKIP_SRC_UNMAP)) {
|
||||
src_cnt = unmap->unmap_src_cnt;
|
||||
while (src_cnt--) {
|
||||
addr = mv_desc_get_src_addr(unmap,
|
||||
src_cnt);
|
||||
if (addr == dest)
|
||||
continue;
|
||||
dma_unmap_page(dev, addr, len,
|
||||
DMA_TO_DEVICE);
|
||||
}
|
||||
|
|
|
@ -394,6 +394,12 @@ static void edac_device_workq_function(struct work_struct *work_req)
|
|||
|
||||
mutex_lock(&device_ctls_mutex);
|
||||
|
||||
/* If we are being removed, bail out immediately */
|
||||
if (edac_dev->op_state == OP_OFFLINE) {
|
||||
mutex_unlock(&device_ctls_mutex);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Only poll controllers that are running polled and have a check */
|
||||
if ((edac_dev->op_state == OP_RUNNING_POLL) &&
|
||||
(edac_dev->edac_check != NULL)) {
|
||||
|
@ -585,14 +591,14 @@ struct edac_device_ctl_info *edac_device_del_device(struct device *dev)
|
|||
/* mark this instance as OFFLINE */
|
||||
edac_dev->op_state = OP_OFFLINE;
|
||||
|
||||
/* clear workq processing on this instance */
|
||||
edac_device_workq_teardown(edac_dev);
|
||||
|
||||
/* deregister from global list */
|
||||
del_edac_device_from_global_list(edac_dev);
|
||||
|
||||
mutex_unlock(&device_ctls_mutex);
|
||||
|
||||
/* clear workq processing on this instance */
|
||||
edac_device_workq_teardown(edac_dev);
|
||||
|
||||
/* Tear down the sysfs entries for this instance */
|
||||
edac_device_remove_sysfs(edac_dev);
|
||||
|
||||
|
|
|
@ -717,7 +717,7 @@ static int i915_getparam(struct drm_device *dev, void *data,
|
|||
value = dev->pci_device;
|
||||
break;
|
||||
case I915_PARAM_HAS_GEM:
|
||||
value = 1;
|
||||
value = dev_priv->has_gem;
|
||||
break;
|
||||
default:
|
||||
DRM_ERROR("Unknown parameter %d\n", param->param);
|
||||
|
@ -830,6 +830,14 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
|
|||
|
||||
dev_priv->regs = ioremap(base, size);
|
||||
|
||||
#ifdef CONFIG_HIGHMEM64G
|
||||
/* don't enable GEM on PAE - needs agp + set_memory_* interface fixes */
|
||||
dev_priv->has_gem = 0;
|
||||
#else
|
||||
/* enable GEM by default */
|
||||
dev_priv->has_gem = 1;
|
||||
#endif
|
||||
|
||||
i915_gem_load(dev);
|
||||
|
||||
/* Init HWS */
|
||||
|
|
|
@ -106,6 +106,8 @@ struct intel_opregion {
|
|||
typedef struct drm_i915_private {
|
||||
struct drm_device *dev;
|
||||
|
||||
int has_gem;
|
||||
|
||||
void __iomem *regs;
|
||||
drm_local_map_t *sarea;
|
||||
|
||||
|
|
|
@ -2309,7 +2309,14 @@ i915_gem_busy_ioctl(struct drm_device *dev, void *data,
|
|||
}
|
||||
|
||||
obj_priv = obj->driver_private;
|
||||
args->busy = obj_priv->active;
|
||||
/* Don't count being on the flushing list against the object being
|
||||
* done. Otherwise, a buffer left on the flushing list but not getting
|
||||
* flushed (because nobody's flushing that domain) won't ever return
|
||||
* unbusy and get reused by libdrm's bo cache. The other expected
|
||||
* consumer of this interface, OpenGL's occlusion queries, also specs
|
||||
* that the objects get unbusy "eventually" without any interference.
|
||||
*/
|
||||
args->busy = obj_priv->active && obj_priv->last_rendering_seqno != 0;
|
||||
|
||||
drm_gem_object_unreference(obj);
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
|
|
|
@ -44,7 +44,7 @@ void radeon_irq_set_state(struct drm_device *dev, u32 mask, int state)
|
|||
else
|
||||
dev_priv->irq_enable_reg &= ~mask;
|
||||
|
||||
if (!dev->irq_enabled)
|
||||
if (dev->irq_enabled)
|
||||
RADEON_WRITE(RADEON_GEN_INT_CNTL, dev_priv->irq_enable_reg);
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ static void r500_vbl_irq_set_state(struct drm_device *dev, u32 mask, int state)
|
|||
else
|
||||
dev_priv->r500_disp_irq_reg &= ~mask;
|
||||
|
||||
if (!dev->irq_enabled)
|
||||
if (dev->irq_enabled)
|
||||
RADEON_WRITE(R500_DxMODE_INT_MASK, dev_priv->r500_disp_irq_reg);
|
||||
}
|
||||
|
||||
|
|
|
@ -81,11 +81,12 @@ static u8 cs5530_udma_filter(ide_drive_t *drive)
|
|||
{
|
||||
ide_hwif_t *hwif = drive->hwif;
|
||||
ide_drive_t *mate = ide_get_pair_dev(drive);
|
||||
u16 *mateid = mate->id;
|
||||
u16 *mateid;
|
||||
u8 mask = hwif->ultra_mask;
|
||||
|
||||
if (mate == NULL)
|
||||
goto out;
|
||||
mateid = mate->id;
|
||||
|
||||
if (ata_id_has_dma(mateid) && __ide_dma_bad_drive(mate) == 0) {
|
||||
if ((mateid[ATA_ID_FIELD_VALID] & 4) &&
|
||||
|
|
|
@ -104,11 +104,12 @@ static u8 sc1200_udma_filter(ide_drive_t *drive)
|
|||
{
|
||||
ide_hwif_t *hwif = drive->hwif;
|
||||
ide_drive_t *mate = ide_get_pair_dev(drive);
|
||||
u16 *mateid = mate->id;
|
||||
u16 *mateid;
|
||||
u8 mask = hwif->ultra_mask;
|
||||
|
||||
if (mate == NULL)
|
||||
goto out;
|
||||
mateid = mate->id;
|
||||
|
||||
if (ata_id_has_dma(mateid) && __ide_dma_bad_drive(mate) == 0) {
|
||||
if ((mateid[ATA_ID_FIELD_VALID] & 4) &&
|
||||
|
|
|
@ -208,15 +208,18 @@ static void bitmap_checkfree(struct bitmap *bitmap, unsigned long page)
|
|||
*/
|
||||
|
||||
/* IO operations when bitmap is stored near all superblocks */
|
||||
static struct page *read_sb_page(mddev_t *mddev, long offset, unsigned long index)
|
||||
static struct page *read_sb_page(mddev_t *mddev, long offset,
|
||||
struct page *page,
|
||||
unsigned long index, int size)
|
||||
{
|
||||
/* choose a good rdev and read the page from there */
|
||||
|
||||
mdk_rdev_t *rdev;
|
||||
struct list_head *tmp;
|
||||
struct page *page = alloc_page(GFP_KERNEL);
|
||||
sector_t target;
|
||||
|
||||
if (!page)
|
||||
page = alloc_page(GFP_KERNEL);
|
||||
if (!page)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
|
@ -227,7 +230,9 @@ static struct page *read_sb_page(mddev_t *mddev, long offset, unsigned long inde
|
|||
|
||||
target = rdev->sb_start + offset + index * (PAGE_SIZE/512);
|
||||
|
||||
if (sync_page_io(rdev->bdev, target, PAGE_SIZE, page, READ)) {
|
||||
if (sync_page_io(rdev->bdev, target,
|
||||
roundup(size, bdev_hardsect_size(rdev->bdev)),
|
||||
page, READ)) {
|
||||
page->index = index;
|
||||
attach_page_buffers(page, NULL); /* so that free_buffer will
|
||||
* quietly no-op */
|
||||
|
@ -544,7 +549,9 @@ static int bitmap_read_sb(struct bitmap *bitmap)
|
|||
|
||||
bitmap->sb_page = read_page(bitmap->file, 0, bitmap, bytes);
|
||||
} else {
|
||||
bitmap->sb_page = read_sb_page(bitmap->mddev, bitmap->offset, 0);
|
||||
bitmap->sb_page = read_sb_page(bitmap->mddev, bitmap->offset,
|
||||
NULL,
|
||||
0, sizeof(bitmap_super_t));
|
||||
}
|
||||
if (IS_ERR(bitmap->sb_page)) {
|
||||
err = PTR_ERR(bitmap->sb_page);
|
||||
|
@ -957,11 +964,16 @@ static int bitmap_init_from_disk(struct bitmap *bitmap, sector_t start)
|
|||
*/
|
||||
page = bitmap->sb_page;
|
||||
offset = sizeof(bitmap_super_t);
|
||||
read_sb_page(bitmap->mddev, bitmap->offset,
|
||||
page,
|
||||
index, count);
|
||||
} else if (file) {
|
||||
page = read_page(file, index, bitmap, count);
|
||||
offset = 0;
|
||||
} else {
|
||||
page = read_sb_page(bitmap->mddev, bitmap->offset, index);
|
||||
page = read_sb_page(bitmap->mddev, bitmap->offset,
|
||||
NULL,
|
||||
index, count);
|
||||
offset = 0;
|
||||
}
|
||||
if (IS_ERR(page)) { /* read error */
|
||||
|
|
|
@ -9,11 +9,11 @@ config DVB_B2C2_FLEXCOP
|
|||
select DVB_STV0297 if !DVB_FE_CUSTOMISE
|
||||
select DVB_BCM3510 if !DVB_FE_CUSTOMISE
|
||||
select DVB_LGDT330X if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_SIMPLE if !DVB_FE_CUSTOMISE
|
||||
select DVB_S5H1420 if !DVB_FE_CUSTOMISE
|
||||
select DVB_TUNER_ITD1000 if !DVB_FE_CUSTOMISE
|
||||
select DVB_ISL6421 if !DVB_FE_CUSTOMISE
|
||||
select DVB_CX24123 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_SIMPLE if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
Support for the digital TV receiver chip made by B2C2 Inc. included in
|
||||
Technisats PCI cards and USB boxes.
|
||||
|
|
|
@ -628,12 +628,14 @@ int flexcop_frontend_init(struct flexcop_device *fc)
|
|||
}
|
||||
|
||||
/* try the cable dvb (stv0297) */
|
||||
fc->fc_i2c_adap[0].no_base_addr = 1;
|
||||
fc->fe = dvb_attach(stv0297_attach, &alps_tdee4_stv0297_config, i2c);
|
||||
if (fc->fe != NULL) {
|
||||
fc->dev_type = FC_CABLE;
|
||||
fc->fe->ops.tuner_ops.set_params = alps_tdee4_stv0297_tuner_set_params;
|
||||
goto fe_found;
|
||||
}
|
||||
fc->fc_i2c_adap[0].no_base_addr = 0;
|
||||
|
||||
/* try the sky v2.3 (vp310/Samsung tbdu18132(tsa5059)) */
|
||||
fc->fe = dvb_attach(mt312_attach,
|
||||
|
|
|
@ -47,8 +47,12 @@ static int flexcop_i2c_read4(struct flexcop_i2c_adapter *i2c,
|
|||
int len = r100.tw_sm_c_100.total_bytes, /* remember total_bytes is buflen-1 */
|
||||
ret;
|
||||
|
||||
ret = flexcop_i2c_operation(i2c->fc, &r100);
|
||||
if (ret != 0) {
|
||||
deb_i2c("Retrying operation\n");
|
||||
r100.tw_sm_c_100.no_base_addr_ack_error = i2c->no_base_addr;
|
||||
ret = flexcop_i2c_operation(i2c->fc, &r100);
|
||||
}
|
||||
if (ret != 0) {
|
||||
deb_i2c("read failed. %d\n", ret);
|
||||
return ret;
|
||||
|
|
|
@ -8,7 +8,7 @@ config DVB_BT8XX
|
|||
select DVB_OR51211 if !DVB_FE_CUSTOMISE
|
||||
select DVB_LGDT330X if !DVB_FE_CUSTOMISE
|
||||
select DVB_ZL10353 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_SIMPLE if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_SIMPLE if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
Support for PCI cards based on the Bt8xx PCI bridge. Examples are
|
||||
the Nebula cards, the Pinnacle PCTV cards, the Twinhan DST cards,
|
||||
|
|
|
@ -24,8 +24,8 @@ config DVB_USB_A800
|
|||
tristate "AVerMedia AverTV DVB-T USB 2.0 (A800)"
|
||||
depends on DVB_USB
|
||||
select DVB_DIB3000MC
|
||||
select MEDIA_TUNER_MT2060 if !DVB_FE_CUSTOMISE
|
||||
select DVB_PLL if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
Say Y here to support the AVerMedia AverTV DVB-T USB 2.0 (A800) receiver.
|
||||
|
||||
|
@ -34,7 +34,7 @@ config DVB_USB_DIBUSB_MB
|
|||
depends on DVB_USB
|
||||
select DVB_PLL if !DVB_FE_CUSTOMISE
|
||||
select DVB_DIB3000MB
|
||||
select MEDIA_TUNER_MT2060 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
Support for USB 1.1 and 2.0 DVB-T receivers based on reference designs made by
|
||||
DiBcom (<http://www.dibcom.fr>) equipped with a DiB3000M-B demodulator.
|
||||
|
@ -55,7 +55,7 @@ config DVB_USB_DIBUSB_MC
|
|||
tristate "DiBcom USB DVB-T devices (based on the DiB3000M-C/P) (see help for device list)"
|
||||
depends on DVB_USB
|
||||
select DVB_DIB3000MC
|
||||
select MEDIA_TUNER_MT2060 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
Support for USB2.0 DVB-T receivers based on reference designs made by
|
||||
DiBcom (<http://www.dibcom.fr>) equipped with a DiB3000M-C/P demodulator.
|
||||
|
@ -73,11 +73,11 @@ config DVB_USB_DIB0700
|
|||
select DVB_DIB7000M
|
||||
select DVB_DIB3000MC
|
||||
select DVB_S5H1411 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_MT2060 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_MT2266 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_XC2028 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_XC5000 if !DVB_FE_CUSTOMIZE
|
||||
select DVB_TUNER_DIB0070
|
||||
select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_MT2266 if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_XC2028 if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_XC5000 if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
Support for USB2.0/1.1 DVB receivers based on the DiB0700 USB bridge. The
|
||||
USB bridge is also present in devices having the DiB7700 DVB-T-USB
|
||||
|
@ -95,7 +95,7 @@ config DVB_USB_UMT_010
|
|||
depends on DVB_USB
|
||||
select DVB_PLL if !DVB_FE_CUSTOMISE
|
||||
select DVB_DIB3000MC
|
||||
select MEDIA_TUNER_MT2060 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
Say Y here to support the HanfTek UMT-010 USB2.0 stick-sized DVB-T receiver.
|
||||
|
||||
|
@ -107,11 +107,11 @@ config DVB_USB_CXUSB
|
|||
select DVB_LGDT330X if !DVB_FE_CUSTOMISE
|
||||
select DVB_MT352 if !DVB_FE_CUSTOMISE
|
||||
select DVB_ZL10353 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_SIMPLE if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_XC2028 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_MXL5005S if !DVB_FE_CUSTOMISE
|
||||
select DVB_DIB7000P if !DVB_FE_CUSTOMISE
|
||||
select DVB_TUNER_DIB0070 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_SIMPLE if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_XC2028 if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_MXL5005S if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
Say Y here to support the Conexant USB2.0 hybrid reference design.
|
||||
Currently, only DVB and ATSC modes are supported, analog mode
|
||||
|
@ -124,9 +124,9 @@ config DVB_USB_M920X
|
|||
tristate "Uli m920x DVB-T USB2.0 support"
|
||||
depends on DVB_USB
|
||||
select DVB_MT352 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_QT1010 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_TDA827X if !DVB_FE_CUSTOMISE
|
||||
select DVB_TDA1004X if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_QT1010 if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_TDA827X if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
Say Y here to support the MSI Mega Sky 580 USB2.0 DVB-T receiver.
|
||||
Currently, only devices with a product id of
|
||||
|
@ -137,7 +137,7 @@ config DVB_USB_GL861
|
|||
tristate "Genesys Logic GL861 USB2.0 support"
|
||||
depends on DVB_USB
|
||||
select DVB_ZL10353 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_QT1010 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_QT1010 if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
Say Y here to support the MSI Megasky 580 (55801) DVB-T USB2.0
|
||||
receiver with USB ID 0db0:5581.
|
||||
|
@ -146,7 +146,7 @@ config DVB_USB_AU6610
|
|||
tristate "Alcor Micro AU6610 USB2.0 support"
|
||||
depends on DVB_USB
|
||||
select DVB_ZL10353 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_QT1010 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_QT1010 if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
Say Y here to support the Sigmatek DVB-110 DVB-T USB2.0 receiver.
|
||||
|
||||
|
@ -198,8 +198,8 @@ config DVB_USB_NOVA_T_USB2
|
|||
tristate "Hauppauge WinTV-NOVA-T usb2 DVB-T USB2.0 support"
|
||||
depends on DVB_USB
|
||||
select DVB_DIB3000MC
|
||||
select MEDIA_TUNER_MT2060 if !DVB_FE_CUSTOMISE
|
||||
select DVB_PLL if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
Say Y here to support the Hauppauge WinTV-NOVA-T usb2 DVB-T USB2.0 receiver.
|
||||
|
||||
|
@ -235,8 +235,8 @@ config DVB_USB_OPERA1
|
|||
config DVB_USB_AF9005
|
||||
tristate "Afatech AF9005 DVB-T USB1.1 support"
|
||||
depends on DVB_USB && EXPERIMENTAL
|
||||
select MEDIA_TUNER_MT2060 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_QT1010 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_QT1010 if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
Say Y here to support the Afatech AF9005 based DVB-T USB1.1 receiver
|
||||
and the TerraTec Cinergy T USB XE (Rev.1)
|
||||
|
@ -284,7 +284,7 @@ config DVB_USB_DTV5100
|
|||
tristate "AME DTV-5100 USB2.0 DVB-T support"
|
||||
depends on DVB_USB
|
||||
select DVB_ZL10353 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_QT1010 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_QT1010 if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
Say Y here to support the AME DTV-5100 USB2.0 DVB-T receiver.
|
||||
|
||||
|
@ -293,9 +293,9 @@ config DVB_USB_AF9015
|
|||
depends on DVB_USB && EXPERIMENTAL
|
||||
select DVB_AF9013
|
||||
select DVB_PLL if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_MT2060 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_QT1010 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_TDA18271 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_MXL5005S if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_QT1010 if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_TDA18271 if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_MXL5005S if !MEDIA_TUNER_CUSTOMIZE
|
||||
help
|
||||
Say Y here to support the Afatech AF9015 based DVB-T USB2.0 receiver
|
||||
|
|
|
@ -446,13 +446,13 @@ static int stk7700ph_tuner_attach(struct dvb_usb_adapter *adap)
|
|||
== NULL ? -ENODEV : 0;
|
||||
}
|
||||
|
||||
#define DEFAULT_RC_INTERVAL 150
|
||||
#define DEFAULT_RC_INTERVAL 50
|
||||
|
||||
static u8 rc_request[] = { REQUEST_POLL_RC, 0 };
|
||||
|
||||
/* Number of keypresses to ignore before start repeating */
|
||||
#define RC_REPEAT_DELAY 2
|
||||
#define RC_REPEAT_DELAY_V1_20 5
|
||||
#define RC_REPEAT_DELAY 6
|
||||
#define RC_REPEAT_DELAY_V1_20 10
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -106,7 +106,7 @@ config DVB_BUDGET_CI
|
|||
select DVB_TDA1004X if !DVB_FE_CUSTOMISE
|
||||
select DVB_LNBP21 if !DVB_FE_CUSTOMISE
|
||||
select DVB_TDA10023 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_TDA827X if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_TDA827X if !MEDIA_TUNER_CUSTOMIZE
|
||||
select VIDEO_IR
|
||||
help
|
||||
Support for simple SAA7146 based DVB cards
|
||||
|
|
|
@ -831,7 +831,7 @@ long v4l_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg)
|
|||
{
|
||||
int ret = -ENOIOCTLCMD;
|
||||
|
||||
if (!file->f_op->ioctl)
|
||||
if (!file->f_op->ioctl && !file->f_op->unlocked_ioctl)
|
||||
return ret;
|
||||
|
||||
switch (cmd) {
|
||||
|
|
|
@ -9,7 +9,7 @@ config VIDEO_CX18
|
|||
select VIDEO_CX2341X
|
||||
select VIDEO_CS5345
|
||||
select DVB_S5H1409 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_MXL5005S if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_MXL5005S if !MEDIA_TUNER_CUSTOMIZE
|
||||
---help---
|
||||
This is a video4linux driver for Conexant cx23418 based
|
||||
PCI combo video recorder devices.
|
||||
|
|
|
@ -11,16 +11,16 @@ config VIDEO_CX23885
|
|||
select VIDEO_CX25840
|
||||
select VIDEO_CX2341X
|
||||
select DVB_DIB7000P if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_MT2131 if !DVB_FE_CUSTOMISE
|
||||
select DVB_S5H1409 if !DVB_FE_CUSTOMISE
|
||||
select DVB_S5H1411 if !DVB_FE_CUSTOMISE
|
||||
select DVB_LGDT330X if !DVB_FE_CUSTOMISE
|
||||
select DVB_ZL10353 if !DVB_FE_CUSTOMISE
|
||||
select DVB_TDA10048 if !DVB_FE_CUSTOMIZE
|
||||
select MEDIA_TUNER_MT2131 if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_XC2028 if !DVB_FE_CUSTOMIZE
|
||||
select MEDIA_TUNER_TDA8290 if !DVB_FE_CUSTOMIZE
|
||||
select MEDIA_TUNER_TDA18271 if !DVB_FE_CUSTOMIZE
|
||||
select MEDIA_TUNER_XC5000 if !DVB_FE_CUSTOMIZE
|
||||
select DVB_TDA10048 if !DVB_FE_CUSTOMIZE
|
||||
---help---
|
||||
This is a video4linux driver for Conexant 23885 based
|
||||
TV cards.
|
||||
|
|
|
@ -56,12 +56,12 @@ config VIDEO_CX88_DVB
|
|||
select DVB_NXT200X if !DVB_FE_CUSTOMISE
|
||||
select DVB_CX24123 if !DVB_FE_CUSTOMISE
|
||||
select DVB_ISL6421 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_SIMPLE if !DVB_FE_CUSTOMISE
|
||||
select DVB_S5H1411 if !DVB_FE_CUSTOMISE
|
||||
select DVB_CX24116 if !DVB_FE_CUSTOMISE
|
||||
select DVB_STV0299 if !DVB_FE_CUSTOMISE
|
||||
select DVB_STV0288 if !DVB_FE_CUSTOMISE
|
||||
select DVB_STB6000 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_SIMPLE if !MEDIA_TUNER_CUSTOMIZE
|
||||
---help---
|
||||
This adds support for DVB/ATSC cards based on the
|
||||
Conexant 2388x chip.
|
||||
|
|
|
@ -549,10 +549,11 @@ static int em28xx_config(struct em28xx *dev)
|
|||
static void em28xx_config_i2c(struct em28xx *dev)
|
||||
{
|
||||
struct v4l2_routing route;
|
||||
int zero = 0;
|
||||
|
||||
route.input = INPUT(dev->ctl_input)->vmux;
|
||||
route.output = 0;
|
||||
em28xx_i2c_call_clients(dev, VIDIOC_INT_RESET, NULL);
|
||||
em28xx_i2c_call_clients(dev, VIDIOC_INT_RESET, &zero);
|
||||
em28xx_i2c_call_clients(dev, VIDIOC_INT_S_VIDEO_ROUTING, &route);
|
||||
em28xx_i2c_call_clients(dev, VIDIOC_STREAMON, NULL);
|
||||
}
|
||||
|
|
|
@ -1264,10 +1264,10 @@ static int vidioc_s_jpegcomp(struct file *file, void *priv,
|
|||
struct gspca_dev *gspca_dev = priv;
|
||||
int ret;
|
||||
|
||||
if (mutex_lock_interruptible(&gspca_dev->usb_lock))
|
||||
return -ERESTARTSYS;
|
||||
if (!gspca_dev->sd_desc->set_jcomp)
|
||||
return -EINVAL;
|
||||
if (mutex_lock_interruptible(&gspca_dev->usb_lock))
|
||||
return -ERESTARTSYS;
|
||||
ret = gspca_dev->sd_desc->set_jcomp(gspca_dev, jpegcomp);
|
||||
mutex_unlock(&gspca_dev->usb_lock);
|
||||
return ret;
|
||||
|
|
|
@ -42,7 +42,7 @@ config VIDEO_PVRUSB2_DVB
|
|||
select DVB_S5H1411 if !DVB_FE_CUSTOMISE
|
||||
select DVB_TDA10048 if !DVB_FE_CUSTOMIZE
|
||||
select MEDIA_TUNER_TDA18271 if !DVB_FE_CUSTOMIZE
|
||||
select MEDIA_TUNER_SIMPLE if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_SIMPLE if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_TDA8290 if !DVB_FE_CUSTOMIZE
|
||||
---help---
|
||||
|
||||
|
|
|
@ -34,9 +34,9 @@ config VIDEO_SAA7134_DVB
|
|||
select DVB_NXT200X if !DVB_FE_CUSTOMISE
|
||||
select DVB_TDA10086 if !DVB_FE_CUSTOMISE
|
||||
select DVB_TDA826X if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_TDA827X if !DVB_FE_CUSTOMISE
|
||||
select DVB_ISL6421 if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_SIMPLE if !DVB_FE_CUSTOMISE
|
||||
select MEDIA_TUNER_TDA827X if !MEDIA_TUNER_CUSTOMIZE
|
||||
select MEDIA_TUNER_SIMPLE if !MEDIA_TUNER_CUSTOMIZE
|
||||
---help---
|
||||
This adds support for DVB cards based on the
|
||||
Philips saa7134 chip.
|
||||
|
|
|
@ -2008,6 +2008,9 @@ mptscsih_host_reset(struct scsi_cmnd *SCpnt)
|
|||
return FAILED;
|
||||
}
|
||||
|
||||
/* make sure we have no outstanding commands at this stage */
|
||||
mptscsih_flush_running_cmds(hd);
|
||||
|
||||
ioc = hd->ioc;
|
||||
printk(MYIOC_s_INFO_FMT "attempting host reset! (sc=%p)\n",
|
||||
ioc->name, SCpnt);
|
||||
|
|
|
@ -543,9 +543,9 @@ bnx2_free_rx_mem(struct bnx2 *bp)
|
|||
for (j = 0; j < bp->rx_max_pg_ring; j++) {
|
||||
if (rxr->rx_pg_desc_ring[j])
|
||||
pci_free_consistent(bp->pdev, RXBD_RING_SIZE,
|
||||
rxr->rx_pg_desc_ring[i],
|
||||
rxr->rx_pg_desc_mapping[i]);
|
||||
rxr->rx_pg_desc_ring[i] = NULL;
|
||||
rxr->rx_pg_desc_ring[j],
|
||||
rxr->rx_pg_desc_mapping[j]);
|
||||
rxr->rx_pg_desc_ring[j] = NULL;
|
||||
}
|
||||
if (rxr->rx_pg_ring)
|
||||
vfree(rxr->rx_pg_ring);
|
||||
|
|
|
@ -959,7 +959,7 @@ static void enc28j60_hw_rx(struct net_device *ndev)
|
|||
ndev->stats.rx_packets++;
|
||||
ndev->stats.rx_bytes += len;
|
||||
ndev->last_rx = jiffies;
|
||||
netif_rx(skb);
|
||||
netif_rx_ni(skb);
|
||||
}
|
||||
}
|
||||
/*
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
*/
|
||||
|
||||
#ifndef __JME_H_INCLUDED__
|
||||
#define __JME_H_INCLUDEE__
|
||||
#define __JME_H_INCLUDED__
|
||||
|
||||
#define DRV_NAME "jme"
|
||||
#define DRV_VERSION "1.0.3"
|
||||
|
|
|
@ -105,8 +105,6 @@ int mdiobus_register(struct mii_bus *bus)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
bus->state = MDIOBUS_REGISTERED;
|
||||
|
||||
mutex_init(&bus->mdio_lock);
|
||||
|
||||
if (bus->reset)
|
||||
|
@ -123,6 +121,9 @@ int mdiobus_register(struct mii_bus *bus)
|
|||
}
|
||||
}
|
||||
|
||||
if (!err)
|
||||
bus->state = MDIOBUS_REGISTERED;
|
||||
|
||||
pr_info("%s: probed\n", bus->name);
|
||||
|
||||
return err;
|
||||
|
|
|
@ -116,6 +116,7 @@ struct ppp {
|
|||
unsigned long last_xmit; /* jiffies when last pkt sent 9c */
|
||||
unsigned long last_recv; /* jiffies when last pkt rcvd a0 */
|
||||
struct net_device *dev; /* network interface device a4 */
|
||||
int closing; /* is device closing down? a8 */
|
||||
#ifdef CONFIG_PPP_MULTILINK
|
||||
int nxchan; /* next channel to send something on */
|
||||
u32 nxseq; /* next sequence number to send */
|
||||
|
@ -995,7 +996,7 @@ ppp_xmit_process(struct ppp *ppp)
|
|||
struct sk_buff *skb;
|
||||
|
||||
ppp_xmit_lock(ppp);
|
||||
if (ppp->dev) {
|
||||
if (!ppp->closing) {
|
||||
ppp_push(ppp);
|
||||
while (!ppp->xmit_pending
|
||||
&& (skb = skb_dequeue(&ppp->file.xq)))
|
||||
|
@ -1463,8 +1464,7 @@ static inline void
|
|||
ppp_do_recv(struct ppp *ppp, struct sk_buff *skb, struct channel *pch)
|
||||
{
|
||||
ppp_recv_lock(ppp);
|
||||
/* ppp->dev == 0 means interface is closing down */
|
||||
if (ppp->dev)
|
||||
if (!ppp->closing)
|
||||
ppp_receive_frame(ppp, skb, pch);
|
||||
else
|
||||
kfree_skb(skb);
|
||||
|
@ -2498,18 +2498,16 @@ init_ppp_file(struct ppp_file *pf, int kind)
|
|||
*/
|
||||
static void ppp_shutdown_interface(struct ppp *ppp)
|
||||
{
|
||||
struct net_device *dev;
|
||||
|
||||
mutex_lock(&all_ppp_mutex);
|
||||
ppp_lock(ppp);
|
||||
dev = ppp->dev;
|
||||
ppp->dev = NULL;
|
||||
ppp_unlock(ppp);
|
||||
/* This will call dev_close() for us. */
|
||||
if (dev) {
|
||||
unregister_netdev(dev);
|
||||
free_netdev(dev);
|
||||
}
|
||||
ppp_lock(ppp);
|
||||
if (!ppp->closing) {
|
||||
ppp->closing = 1;
|
||||
ppp_unlock(ppp);
|
||||
unregister_netdev(ppp->dev);
|
||||
} else
|
||||
ppp_unlock(ppp);
|
||||
|
||||
cardmap_set(&all_ppp_units, ppp->file.index, NULL);
|
||||
ppp->file.dead = 1;
|
||||
ppp->owner = NULL;
|
||||
|
@ -2554,7 +2552,7 @@ static void ppp_destroy_interface(struct ppp *ppp)
|
|||
if (ppp->xmit_pending)
|
||||
kfree_skb(ppp->xmit_pending);
|
||||
|
||||
kfree(ppp);
|
||||
free_netdev(ppp->dev);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2616,7 +2614,7 @@ ppp_connect_channel(struct channel *pch, int unit)
|
|||
if (pch->file.hdrlen > ppp->file.hdrlen)
|
||||
ppp->file.hdrlen = pch->file.hdrlen;
|
||||
hdrlen = pch->file.hdrlen + 2; /* for protocol bytes */
|
||||
if (ppp->dev && hdrlen > ppp->dev->hard_header_len)
|
||||
if (hdrlen > ppp->dev->hard_header_len)
|
||||
ppp->dev->hard_header_len = hdrlen;
|
||||
list_add_tail(&pch->clist, &ppp->channels);
|
||||
++ppp->n_channels;
|
||||
|
|
|
@ -1509,6 +1509,11 @@ static int __netdev_rx(struct net_device *dev, int *quota)
|
|||
desc->status = 0;
|
||||
np->rx_done = (np->rx_done + 1) % DONE_Q_SIZE;
|
||||
}
|
||||
|
||||
if (*quota == 0) { /* out of rx quota */
|
||||
retcode = 1;
|
||||
goto out;
|
||||
}
|
||||
writew(np->rx_done, np->base + CompletionQConsumerIdx);
|
||||
|
||||
out:
|
||||
|
|
|
@ -1098,6 +1098,7 @@ static int TLan_StartTx( struct sk_buff *skb, struct net_device *dev )
|
|||
dma_addr_t tail_list_phys;
|
||||
u8 *tail_buffer;
|
||||
unsigned long flags;
|
||||
unsigned int txlen;
|
||||
|
||||
if ( ! priv->phyOnline ) {
|
||||
TLAN_DBG( TLAN_DEBUG_TX, "TRANSMIT: %s PHY is not ready\n",
|
||||
|
@ -1108,6 +1109,7 @@ static int TLan_StartTx( struct sk_buff *skb, struct net_device *dev )
|
|||
|
||||
if (skb_padto(skb, TLAN_MIN_FRAME_SIZE))
|
||||
return 0;
|
||||
txlen = max(skb->len, (unsigned int)TLAN_MIN_FRAME_SIZE);
|
||||
|
||||
tail_list = priv->txList + priv->txTail;
|
||||
tail_list_phys = priv->txListDMA + sizeof(TLanList) * priv->txTail;
|
||||
|
@ -1125,16 +1127,16 @@ static int TLan_StartTx( struct sk_buff *skb, struct net_device *dev )
|
|||
|
||||
if ( bbuf ) {
|
||||
tail_buffer = priv->txBuffer + ( priv->txTail * TLAN_MAX_FRAME_SIZE );
|
||||
skb_copy_from_linear_data(skb, tail_buffer, skb->len);
|
||||
skb_copy_from_linear_data(skb, tail_buffer, txlen);
|
||||
} else {
|
||||
tail_list->buffer[0].address = pci_map_single(priv->pciDev,
|
||||
skb->data, skb->len,
|
||||
skb->data, txlen,
|
||||
PCI_DMA_TODEVICE);
|
||||
TLan_StoreSKB(tail_list, skb);
|
||||
}
|
||||
|
||||
tail_list->frameSize = (u16) skb->len;
|
||||
tail_list->buffer[0].count = TLAN_LAST_BUFFER | (u32) skb->len;
|
||||
tail_list->frameSize = (u16) txlen;
|
||||
tail_list->buffer[0].count = TLAN_LAST_BUFFER | (u32) txlen;
|
||||
tail_list->buffer[1].count = 0;
|
||||
tail_list->buffer[1].address = 0;
|
||||
|
||||
|
@ -1431,7 +1433,9 @@ static u32 TLan_HandleTxEOF( struct net_device *dev, u16 host_int )
|
|||
if ( ! bbuf ) {
|
||||
struct sk_buff *skb = TLan_GetSKB(head_list);
|
||||
pci_unmap_single(priv->pciDev, head_list->buffer[0].address,
|
||||
skb->len, PCI_DMA_TODEVICE);
|
||||
max(skb->len,
|
||||
(unsigned int)TLAN_MIN_FRAME_SIZE),
|
||||
PCI_DMA_TODEVICE);
|
||||
dev_kfree_skb_any(skb);
|
||||
head_list->buffer[8].address = 0;
|
||||
head_list->buffer[9].address = 0;
|
||||
|
@ -2055,8 +2059,11 @@ static void TLan_FreeLists( struct net_device *dev )
|
|||
list = priv->txList + i;
|
||||
skb = TLan_GetSKB(list);
|
||||
if ( skb ) {
|
||||
pci_unmap_single(priv->pciDev,
|
||||
list->buffer[0].address, skb->len,
|
||||
pci_unmap_single(
|
||||
priv->pciDev,
|
||||
list->buffer[0].address,
|
||||
max(skb->len,
|
||||
(unsigned int)TLAN_MIN_FRAME_SIZE),
|
||||
PCI_DMA_TODEVICE);
|
||||
dev_kfree_skb_any( skb );
|
||||
list->buffer[8].address = 0;
|
||||
|
|
|
@ -113,7 +113,7 @@ struct acpiphp_slot {
|
|||
|
||||
u8 device; /* pci device# */
|
||||
|
||||
u32 sun; /* ACPI _SUN (slot unique number) */
|
||||
unsigned long long sun; /* ACPI _SUN (slot unique number) */
|
||||
u32 flags; /* see below */
|
||||
};
|
||||
|
||||
|
|
|
@ -337,7 +337,7 @@ int acpiphp_register_hotplug_slot(struct acpiphp_slot *acpiphp_slot)
|
|||
slot->hotplug_slot->info->cur_bus_speed = PCI_SPEED_UNKNOWN;
|
||||
|
||||
acpiphp_slot->slot = slot;
|
||||
snprintf(name, SLOT_NAME_SIZE, "%u", slot->acpi_slot->sun);
|
||||
snprintf(name, SLOT_NAME_SIZE, "%llu", slot->acpi_slot->sun);
|
||||
|
||||
retval = pci_hp_register(slot->hotplug_slot,
|
||||
acpiphp_slot->bridge->pci_bus,
|
||||
|
|
|
@ -255,13 +255,13 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv)
|
|||
|
||||
bridge->nr_slots++;
|
||||
|
||||
dbg("found ACPI PCI Hotplug slot %d at PCI %04x:%02x:%02x\n",
|
||||
dbg("found ACPI PCI Hotplug slot %llu at PCI %04x:%02x:%02x\n",
|
||||
slot->sun, pci_domain_nr(bridge->pci_bus),
|
||||
bridge->pci_bus->number, slot->device);
|
||||
retval = acpiphp_register_hotplug_slot(slot);
|
||||
if (retval) {
|
||||
if (retval == -EBUSY)
|
||||
warn("Slot %d already registered by another "
|
||||
warn("Slot %llu already registered by another "
|
||||
"hotplug driver\n", slot->sun);
|
||||
else
|
||||
warn("acpiphp_register_hotplug_slot failed "
|
||||
|
|
|
@ -1402,10 +1402,6 @@ static int __init ibmphp_init(void)
|
|||
goto error;
|
||||
}
|
||||
|
||||
/* lock ourselves into memory with a module
|
||||
* count of -1 so that no one can unload us. */
|
||||
module_put(THIS_MODULE);
|
||||
|
||||
exit:
|
||||
return rc;
|
||||
|
||||
|
@ -1423,4 +1419,3 @@ static void __exit ibmphp_exit(void)
|
|||
}
|
||||
|
||||
module_init(ibmphp_init);
|
||||
module_exit(ibmphp_exit);
|
||||
|
|
|
@ -432,19 +432,20 @@ static int pciehp_probe(struct pcie_device *dev, const struct pcie_port_service_
|
|||
goto err_out_release_ctlr;
|
||||
}
|
||||
|
||||
/* Check if slot is occupied */
|
||||
t_slot = pciehp_find_slot(ctrl, ctrl->slot_device_offset);
|
||||
|
||||
t_slot->hpc_ops->get_adapter_status(t_slot, &value); /* Check if slot is occupied */
|
||||
if (value && pciehp_force) {
|
||||
rc = pciehp_enable_slot(t_slot);
|
||||
if (rc) /* -ENODEV: shouldn't happen, but deal with it */
|
||||
value = 0;
|
||||
}
|
||||
if ((POWER_CTRL(ctrl)) && !value) {
|
||||
rc = t_slot->hpc_ops->power_off_slot(t_slot); /* Power off slot if not occupied*/
|
||||
t_slot->hpc_ops->get_adapter_status(t_slot, &value);
|
||||
if (value) {
|
||||
if (pciehp_force)
|
||||
pciehp_enable_slot(t_slot);
|
||||
} else {
|
||||
/* Power off slot if not occupied */
|
||||
if (POWER_CTRL(ctrl)) {
|
||||
rc = t_slot->hpc_ops->power_off_slot(t_slot);
|
||||
if (rc)
|
||||
goto err_out_free_ctrl_slot;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -252,7 +252,7 @@ static void report_resume(struct pci_dev *dev, void *data)
|
|||
|
||||
if (!dev->driver ||
|
||||
!dev->driver->err_handler ||
|
||||
!dev->driver->err_handler->slot_reset)
|
||||
!dev->driver->err_handler->resume)
|
||||
return;
|
||||
|
||||
err_handler = dev->driver->err_handler;
|
||||
|
|
|
@ -328,6 +328,13 @@ isl1208_i2c_set_time(struct i2c_client *client, struct rtc_time const *tm)
|
|||
int sr;
|
||||
u8 regs[ISL1208_RTC_SECTION_LEN] = { 0, };
|
||||
|
||||
/* The clock has an 8 bit wide bcd-coded register (they never learn)
|
||||
* for the year. tm_year is an offset from 1900 and we are interested
|
||||
* in the 2000-2099 range, so any value less than 100 is invalid.
|
||||
*/
|
||||
if (tm->tm_year < 100)
|
||||
return -EINVAL;
|
||||
|
||||
regs[ISL1208_REG_SC] = bin2bcd(tm->tm_sec);
|
||||
regs[ISL1208_REG_MN] = bin2bcd(tm->tm_min);
|
||||
regs[ISL1208_REG_HR] = bin2bcd(tm->tm_hour) | ISL1208_REG_HR_MIL;
|
||||
|
|
|
@ -175,8 +175,8 @@ static struct aac_driver_ident aac_drivers[] = {
|
|||
{ aac_rx_init, "percraid", "DELL ", "PERCRAID ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* PERC 3/Di (Boxster/PERC3DiB) */
|
||||
{ aac_rx_init, "aacraid", "ADAPTEC ", "catapult ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* catapult */
|
||||
{ aac_rx_init, "aacraid", "ADAPTEC ", "tomcat ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* tomcat */
|
||||
{ aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2120S ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2120S (Crusader) */
|
||||
{ aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2200S ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2200S (Vulcan) */
|
||||
{ aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2120S ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG }, /* Adaptec 2120S (Crusader) */
|
||||
{ aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2200S ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG }, /* Adaptec 2200S (Vulcan) */
|
||||
{ aac_rx_init, "aacraid", "ADAPTEC ", "Adaptec 2200S ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Adaptec 2200S (Vulcan-2m) */
|
||||
{ aac_rx_init, "aacraid", "Legend ", "Legend S220 ", 1, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Legend S220 (Legend Crusader) */
|
||||
{ aac_rx_init, "aacraid", "Legend ", "Legend S230 ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG | AAC_QUIRK_SCSI_32 }, /* Legend S230 (Legend Vulcan) */
|
||||
|
|
|
@ -864,21 +864,23 @@ static int ibmvstgt_probe(struct vio_dev *dev, const struct vio_device_id *id)
|
|||
|
||||
INIT_WORK(&vport->crq_work, handle_crq);
|
||||
|
||||
err = crq_queue_create(&vport->crq_queue, target);
|
||||
err = scsi_add_host(shost, target->dev);
|
||||
if (err)
|
||||
goto free_srp_target;
|
||||
|
||||
err = scsi_add_host(shost, target->dev);
|
||||
if (err)
|
||||
goto destroy_queue;
|
||||
|
||||
err = scsi_tgt_alloc_queue(shost);
|
||||
if (err)
|
||||
goto destroy_queue;
|
||||
goto remove_host;
|
||||
|
||||
err = crq_queue_create(&vport->crq_queue, target);
|
||||
if (err)
|
||||
goto free_queue;
|
||||
|
||||
return 0;
|
||||
destroy_queue:
|
||||
crq_queue_destroy(target);
|
||||
free_queue:
|
||||
scsi_tgt_free_queue(shost);
|
||||
remove_host:
|
||||
scsi_remove_host(shost);
|
||||
free_srp_target:
|
||||
srp_target_free(target);
|
||||
put_host:
|
||||
|
|
|
@ -489,12 +489,6 @@ __iscsi_conn_send_pdu(struct iscsi_conn *conn, struct iscsi_hdr *hdr,
|
|||
if (!__kfifo_get(session->cmdpool.queue,
|
||||
(void*)&task, sizeof(void*)))
|
||||
return NULL;
|
||||
|
||||
if ((hdr->opcode == (ISCSI_OP_NOOP_OUT | ISCSI_OP_IMMEDIATE)) &&
|
||||
hdr->ttt == RESERVED_ITT) {
|
||||
conn->ping_task = task;
|
||||
conn->last_ping = jiffies;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* released in complete pdu for task we expect a response for, and
|
||||
|
@ -703,6 +697,11 @@ static void iscsi_send_nopout(struct iscsi_conn *conn, struct iscsi_nopin *rhdr)
|
|||
task = __iscsi_conn_send_pdu(conn, (struct iscsi_hdr *)&hdr, NULL, 0);
|
||||
if (!task)
|
||||
iscsi_conn_printk(KERN_ERR, conn, "Could not send nopout\n");
|
||||
else if (!rhdr) {
|
||||
/* only track our nops */
|
||||
conn->ping_task = task;
|
||||
conn->last_ping = jiffies;
|
||||
}
|
||||
}
|
||||
|
||||
static int iscsi_handle_reject(struct iscsi_conn *conn, struct iscsi_hdr *hdr,
|
||||
|
|
|
@ -648,8 +648,8 @@ static void scsi_requeue_command(struct request_queue *q, struct scsi_cmnd *cmd)
|
|||
struct request *req = cmd->request;
|
||||
unsigned long flags;
|
||||
|
||||
scsi_unprep_request(req);
|
||||
spin_lock_irqsave(q->queue_lock, flags);
|
||||
scsi_unprep_request(req);
|
||||
blk_requeue_request(q, req);
|
||||
spin_unlock_irqrestore(q->queue_lock, flags);
|
||||
|
||||
|
|
|
@ -356,7 +356,9 @@ int w1_reset_select_slave(struct w1_slave *sl)
|
|||
w1_write_8(sl->master, W1_SKIP_ROM);
|
||||
else {
|
||||
u8 match[9] = {W1_MATCH_ROM, };
|
||||
memcpy(&match[1], (u8 *)&sl->reg_num, 8);
|
||||
u64 rn = le64_to_cpu(*((u64*)&sl->reg_num));
|
||||
|
||||
memcpy(&match[1], &rn, 8);
|
||||
w1_write_block(sl->master, match, 9);
|
||||
}
|
||||
return 0;
|
||||
|
|
|
@ -45,7 +45,7 @@ int v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid)
|
|||
struct v9fs_dentry *dent;
|
||||
|
||||
P9_DPRINTK(P9_DEBUG_VFS, "fid %d dentry %s\n",
|
||||
fid->fid, dentry->d_iname);
|
||||
fid->fid, dentry->d_name.name);
|
||||
|
||||
dent = dentry->d_fsdata;
|
||||
if (!dent) {
|
||||
|
@ -79,7 +79,7 @@ static struct p9_fid *v9fs_fid_find(struct dentry *dentry, u32 uid, int any)
|
|||
struct p9_fid *fid, *ret;
|
||||
|
||||
P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p) uid %d any %d\n",
|
||||
dentry->d_iname, dentry, uid, any);
|
||||
dentry->d_name.name, dentry, uid, any);
|
||||
dent = (struct v9fs_dentry *) dentry->d_fsdata;
|
||||
ret = NULL;
|
||||
if (dent) {
|
||||
|
|
|
@ -160,7 +160,7 @@ static int v9fs_parse_options(struct v9fs_session_info *v9ses)
|
|||
v9ses->flags |= V9FS_ACCESS_ANY;
|
||||
else {
|
||||
v9ses->flags |= V9FS_ACCESS_SINGLE;
|
||||
v9ses->uid = simple_strtol(s, &e, 10);
|
||||
v9ses->uid = simple_strtoul(s, &e, 10);
|
||||
if (*e != '\0')
|
||||
v9ses->uid = ~0;
|
||||
}
|
||||
|
|
|
@ -52,7 +52,8 @@
|
|||
|
||||
static int v9fs_dentry_delete(struct dentry *dentry)
|
||||
{
|
||||
P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_iname, dentry);
|
||||
P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_name.name,
|
||||
dentry);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -69,7 +70,8 @@ static int v9fs_dentry_delete(struct dentry *dentry)
|
|||
static int v9fs_cached_dentry_delete(struct dentry *dentry)
|
||||
{
|
||||
struct inode *inode = dentry->d_inode;
|
||||
P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_iname, dentry);
|
||||
P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_name.name,
|
||||
dentry);
|
||||
|
||||
if(!inode)
|
||||
return 1;
|
||||
|
@ -88,7 +90,8 @@ void v9fs_dentry_release(struct dentry *dentry)
|
|||
struct v9fs_dentry *dent;
|
||||
struct p9_fid *temp, *current_fid;
|
||||
|
||||
P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_iname, dentry);
|
||||
P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_name.name,
|
||||
dentry);
|
||||
dent = dentry->d_fsdata;
|
||||
if (dent) {
|
||||
list_for_each_entry_safe(current_fid, temp, &dent->fidlist,
|
||||
|
|
|
@ -963,7 +963,8 @@ static int v9fs_vfs_readlink(struct dentry *dentry, char __user * buffer,
|
|||
if (buflen > PATH_MAX)
|
||||
buflen = PATH_MAX;
|
||||
|
||||
P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_iname, dentry);
|
||||
P9_DPRINTK(P9_DEBUG_VFS, " dentry: %s (%p)\n", dentry->d_name.name,
|
||||
dentry);
|
||||
|
||||
retval = v9fs_readlink(dentry, link, buflen);
|
||||
|
||||
|
@ -1022,7 +1023,8 @@ v9fs_vfs_put_link(struct dentry *dentry, struct nameidata *nd, void *p)
|
|||
{
|
||||
char *s = nd_get_link(nd);
|
||||
|
||||
P9_DPRINTK(P9_DEBUG_VFS, " %s %s\n", dentry->d_name.name, s);
|
||||
P9_DPRINTK(P9_DEBUG_VFS, " %s %s\n", dentry->d_name.name,
|
||||
IS_ERR(s) ? "<error>" : s);
|
||||
if (!IS_ERR(s))
|
||||
__putname(s);
|
||||
}
|
||||
|
|
|
@ -172,7 +172,7 @@
|
|||
|
||||
/* Defaults for debug_level, debug and normal */
|
||||
|
||||
#define ACPI_DEBUG_DEFAULT (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT)
|
||||
#define ACPI_DEBUG_DEFAULT (ACPI_LV_INFO)
|
||||
#define ACPI_NORMAL_DEFAULT (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT)
|
||||
#define ACPI_DEBUG_ALL (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL)
|
||||
|
||||
|
|
|
@ -141,6 +141,10 @@ static inline void *acpi_os_acquire_object(acpi_cache_t * cache)
|
|||
/*
|
||||
* We need to show where it is safe to preempt execution of ACPICA
|
||||
*/
|
||||
#define ACPI_PREEMPTION_POINT() cond_resched()
|
||||
#define ACPI_PREEMPTION_POINT() \
|
||||
do { \
|
||||
if (!irqs_disabled()) \
|
||||
cond_resched(); \
|
||||
} while (0)
|
||||
|
||||
#endif /* __ACLINUX_H__ */
|
||||
|
|
|
@ -303,7 +303,7 @@ extern void ftrace_dump(void);
|
|||
static inline void
|
||||
ftrace_special(unsigned long arg1, unsigned long arg2, unsigned long arg3) { }
|
||||
static inline int
|
||||
ftrace_printk(const char *fmt, ...) __attribute__ ((format (printf, 1, 0)));
|
||||
ftrace_printk(const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
|
||||
|
||||
static inline void tracing_start(void) { }
|
||||
static inline void tracing_stop(void) { }
|
||||
|
|
|
@ -1286,5 +1286,7 @@ int vmemmap_populate_basepages(struct page *start_page,
|
|||
int vmemmap_populate(struct page *start_page, unsigned long pages, int node);
|
||||
void vmemmap_populate_print_last(void);
|
||||
|
||||
extern void *alloc_locked_buffer(size_t size);
|
||||
extern void free_locked_buffer(void *buffer, size_t size);
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _LINUX_MM_H */
|
||||
|
|
|
@ -141,6 +141,7 @@ enum ctattr_protonat {
|
|||
#define CTA_PROTONAT_MAX (__CTA_PROTONAT_MAX - 1)
|
||||
|
||||
enum ctattr_natseq {
|
||||
CTA_NAT_SEQ_UNSPEC,
|
||||
CTA_NAT_SEQ_CORRECTION_POS,
|
||||
CTA_NAT_SEQ_OFFSET_BEFORE,
|
||||
CTA_NAT_SEQ_OFFSET_AFTER,
|
||||
|
|
|
@ -94,6 +94,7 @@ extern void ptrace_notify(int exit_code);
|
|||
extern void __ptrace_link(struct task_struct *child,
|
||||
struct task_struct *new_parent);
|
||||
extern void __ptrace_unlink(struct task_struct *child);
|
||||
extern void ptrace_fork(struct task_struct *task, unsigned long clone_flags);
|
||||
#define PTRACE_MODE_READ 1
|
||||
#define PTRACE_MODE_ATTACH 2
|
||||
/* Returns 0 on success, -errno on denial. */
|
||||
|
@ -313,6 +314,27 @@ static inline void user_enable_block_step(struct task_struct *task)
|
|||
#define arch_ptrace_stop(code, info) do { } while (0)
|
||||
#endif
|
||||
|
||||
#ifndef arch_ptrace_untrace
|
||||
/*
|
||||
* Do machine-specific work before untracing child.
|
||||
*
|
||||
* This is called for a normal detach as well as from ptrace_exit()
|
||||
* when the tracing task dies.
|
||||
*
|
||||
* Called with write_lock(&tasklist_lock) held.
|
||||
*/
|
||||
#define arch_ptrace_untrace(task) do { } while (0)
|
||||
#endif
|
||||
|
||||
#ifndef arch_ptrace_fork
|
||||
/*
|
||||
* Do machine-specific work to initialize a new task.
|
||||
*
|
||||
* This is called from copy_process().
|
||||
*/
|
||||
#define arch_ptrace_fork(child, clone_flags) do { } while (0)
|
||||
#endif
|
||||
|
||||
extern int task_current_syscall(struct task_struct *target, long *callno,
|
||||
unsigned long args[6], unsigned int maxargs,
|
||||
unsigned long *sp, unsigned long *pc);
|
||||
|
|
|
@ -136,8 +136,10 @@ struct dongle_reg {
|
|||
/*
|
||||
* Per-packet information we need to hide inside sk_buff
|
||||
* (must not exceed 48 bytes, check with struct sk_buff)
|
||||
* The default_qdisc_pad field is a temporary hack.
|
||||
*/
|
||||
struct irda_skb_cb {
|
||||
unsigned int default_qdisc_pad;
|
||||
magic_t magic; /* Be sure that we can trust the information */
|
||||
__u32 next_speed; /* The Speed to be set *after* this frame */
|
||||
__u16 mtt; /* Minimum turn around time */
|
||||
|
|
|
@ -17,8 +17,8 @@ DECLARE_TRACE(sched_wait_task,
|
|||
TPARGS(rq, p));
|
||||
|
||||
DECLARE_TRACE(sched_wakeup,
|
||||
TPPROTO(struct rq *rq, struct task_struct *p),
|
||||
TPARGS(rq, p));
|
||||
TPPROTO(struct rq *rq, struct task_struct *p, int success),
|
||||
TPARGS(rq, p, success));
|
||||
|
||||
DECLARE_TRACE(sched_wakeup_new,
|
||||
TPPROTO(struct rq *rq, struct task_struct *p, int success),
|
||||
|
|
|
@ -1024,7 +1024,7 @@ static int cgroup_get_sb(struct file_system_type *fs_type,
|
|||
if (ret == -EBUSY) {
|
||||
mutex_unlock(&cgroup_mutex);
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
goto drop_new_super;
|
||||
goto free_cg_links;
|
||||
}
|
||||
|
||||
/* EBUSY should be the only error here */
|
||||
|
@ -1073,10 +1073,11 @@ static int cgroup_get_sb(struct file_system_type *fs_type,
|
|||
|
||||
return simple_set_mnt(mnt, sb);
|
||||
|
||||
free_cg_links:
|
||||
free_cg_links(&tmp_cg_links);
|
||||
drop_new_super:
|
||||
up_write(&sb->s_umount);
|
||||
deactivate_super(sb);
|
||||
free_cg_links(&tmp_cg_links);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -2934,9 +2935,6 @@ int cgroup_clone(struct task_struct *tsk, struct cgroup_subsys *subsys,
|
|||
again:
|
||||
root = subsys->root;
|
||||
if (root == &rootnode) {
|
||||
printk(KERN_INFO
|
||||
"Not cloning cgroup for unused subsystem %s\n",
|
||||
subsys->name);
|
||||
mutex_unlock(&cgroup_mutex);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1096,6 +1096,8 @@ static struct task_struct *copy_process(unsigned long clone_flags,
|
|||
#ifdef CONFIG_DEBUG_MUTEXES
|
||||
p->blocked_on = NULL; /* not blocked yet */
|
||||
#endif
|
||||
if (unlikely(ptrace_reparented(current)))
|
||||
ptrace_fork(p, clone_flags);
|
||||
|
||||
/* Perform scheduler related setup. Assign this task to a CPU. */
|
||||
sched_fork(p, clone_flags);
|
||||
|
|
|
@ -197,6 +197,11 @@ static int common_timer_create(struct k_itimer *new_timer)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int no_timer_create(struct k_itimer *new_timer)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return nonzero if we know a priori this clockid_t value is bogus.
|
||||
*/
|
||||
|
@ -248,6 +253,7 @@ static __init int init_posix_timers(void)
|
|||
.clock_getres = hrtimer_get_res,
|
||||
.clock_get = posix_get_monotonic_raw,
|
||||
.clock_set = do_posix_clock_nosettime,
|
||||
.timer_create = no_timer_create,
|
||||
};
|
||||
|
||||
register_posix_clock(CLOCK_REALTIME, &clock_realtime);
|
||||
|
|
|
@ -25,6 +25,17 @@
|
|||
#include <asm/pgtable.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
|
||||
/*
|
||||
* Initialize a new task whose father had been ptraced.
|
||||
*
|
||||
* Called from copy_process().
|
||||
*/
|
||||
void ptrace_fork(struct task_struct *child, unsigned long clone_flags)
|
||||
{
|
||||
arch_ptrace_fork(child, clone_flags);
|
||||
}
|
||||
|
||||
/*
|
||||
* ptrace a task: make the debugger its new parent and
|
||||
* move it to the ptrace list.
|
||||
|
@ -72,6 +83,7 @@ void __ptrace_unlink(struct task_struct *child)
|
|||
child->parent = child->real_parent;
|
||||
list_del_init(&child->ptrace_entry);
|
||||
|
||||
arch_ptrace_untrace(child);
|
||||
if (task_is_traced(child))
|
||||
ptrace_untrace(child);
|
||||
}
|
||||
|
|
|
@ -2324,7 +2324,7 @@ out_activate:
|
|||
success = 1;
|
||||
|
||||
out_running:
|
||||
trace_sched_wakeup(rq, p);
|
||||
trace_sched_wakeup(rq, p, success);
|
||||
check_preempt_curr(rq, p, sync);
|
||||
|
||||
p->state = TASK_RUNNING;
|
||||
|
|
|
@ -838,6 +838,7 @@ rb_set_commit_to_write(struct ring_buffer_per_cpu *cpu_buffer)
|
|||
* back to us). This allows us to do a simple loop to
|
||||
* assign the commit to the tail.
|
||||
*/
|
||||
again:
|
||||
while (cpu_buffer->commit_page != cpu_buffer->tail_page) {
|
||||
cpu_buffer->commit_page->page->commit =
|
||||
cpu_buffer->commit_page->write;
|
||||
|
@ -853,6 +854,17 @@ rb_set_commit_to_write(struct ring_buffer_per_cpu *cpu_buffer)
|
|||
cpu_buffer->commit_page->write;
|
||||
barrier();
|
||||
}
|
||||
|
||||
/* again, keep gcc from optimizing */
|
||||
barrier();
|
||||
|
||||
/*
|
||||
* If an interrupt came in just after the first while loop
|
||||
* and pushed the tail page forward, we will be left with
|
||||
* a dangling commit that will never go forward.
|
||||
*/
|
||||
if (unlikely(cpu_buffer->commit_page != cpu_buffer->tail_page))
|
||||
goto again;
|
||||
}
|
||||
|
||||
static void rb_reset_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
|
||||
|
@ -950,12 +962,15 @@ static struct ring_buffer_event *
|
|||
__rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
|
||||
unsigned type, unsigned long length, u64 *ts)
|
||||
{
|
||||
struct buffer_page *tail_page, *head_page, *reader_page;
|
||||
struct buffer_page *tail_page, *head_page, *reader_page, *commit_page;
|
||||
unsigned long tail, write;
|
||||
struct ring_buffer *buffer = cpu_buffer->buffer;
|
||||
struct ring_buffer_event *event;
|
||||
unsigned long flags;
|
||||
|
||||
commit_page = cpu_buffer->commit_page;
|
||||
/* we just need to protect against interrupts */
|
||||
barrier();
|
||||
tail_page = cpu_buffer->tail_page;
|
||||
write = local_add_return(length, &tail_page->write);
|
||||
tail = write - length;
|
||||
|
@ -981,7 +996,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
|
|||
* it all the way around the buffer, bail, and warn
|
||||
* about it.
|
||||
*/
|
||||
if (unlikely(next_page == cpu_buffer->commit_page)) {
|
||||
if (unlikely(next_page == commit_page)) {
|
||||
WARN_ON_ONCE(1);
|
||||
goto out_unlock;
|
||||
}
|
||||
|
|
|
@ -679,6 +679,16 @@ void tracing_reset(struct trace_array *tr, int cpu)
|
|||
ftrace_enable_cpu();
|
||||
}
|
||||
|
||||
void tracing_reset_online_cpus(struct trace_array *tr)
|
||||
{
|
||||
int cpu;
|
||||
|
||||
tr->time_start = ftrace_now(tr->cpu);
|
||||
|
||||
for_each_online_cpu(cpu)
|
||||
tracing_reset(tr, cpu);
|
||||
}
|
||||
|
||||
#define SAVED_CMDLINES 128
|
||||
static unsigned map_pid_to_cmdline[PID_MAX_DEFAULT+1];
|
||||
static unsigned map_cmdline_to_pid[SAVED_CMDLINES];
|
||||
|
|
|
@ -374,6 +374,7 @@ struct trace_iterator {
|
|||
int tracing_is_enabled(void);
|
||||
void trace_wake_up(void);
|
||||
void tracing_reset(struct trace_array *tr, int cpu);
|
||||
void tracing_reset_online_cpus(struct trace_array *tr);
|
||||
int tracing_open_generic(struct inode *inode, struct file *filp);
|
||||
struct dentry *tracing_init_dentry(void);
|
||||
void init_tracer_sysprof_debugfs(struct dentry *d_tracer);
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче